L'initialisation d'un tableau d'objets

Je suis actuellement en train de travailler sur un jeu de carte, et je vais avoir des problèmes avec un code d'initialisation:

//in my class...
Card cards[20];
//in method...
for(int i = 0; i <= 20;i++)
    cards++ = new Card(i, /*i as char +*/ "_Card.bmp");

Le problème, c'est que mon compilateur me dit que cards++ n'est pas une l-value. J'ai lu sur l'ensemble du pointeur de tableau d'équivalence chose, et j'ai pensé que je l'ai compris, mais hélas, je ne peux pas le faire fonctionner. Ma compréhension est que, depuis cards se dégrade à un pointeur, et le new opérateur me donne un pointeur vers l'emplacement de ma nouvelle instance de la Carte, puis le code ci-dessus devrait compiler. Droit?

J'ai essayé à l'aide d'un indice, mais n'est pas cards+i, cards++, et cards[i] seulement 3 façons de dire la même chose? J'ai pensé que chacun de ceux qui étaient l-valeurs et sont traités comme des pointeurs.

cartes+je retourne cartes+i; cartes++ incrémentation de cartes; cartes[i] renvoie une référence à la i-ième élément de cartes. Ils sont tous différents.

OriginalL'auteur Stephen Collins | 2011-09-26