2009-10-03 6 views
1

En exécutant Ubuntu et le compilateur g ++, je reçois toujours la même erreur de ce code.Qu'est-ce que cela signifie quand je "ne peux pas convertir X ** en X *" dans une "nouvelle" affectation?

myClass *arr; 
arr = new myClass*[myClassSize]; // line 24 
for(int a = 0;a<myClassSize;a++) 
    arr[a] = new myClass; 

Voici l'erreur:

 
cannot convert 'myClass **' to 'myClass *' in assignment 

Le problème était sur la ligne 24.

+0

Cette modification à la question change complètement les choses. –

+0

Pas spécialement. Je pense que c'est assez clair ce que le code essaie de faire (et donc le problème et la solution). Le message d'erreur n'est même pas nécessaire. –

+0

Mark, je ne suis pas sûr de quel edit vous parlez, mais la seule modification qui a vraiment changé quelque chose était le premier, par Litb. Il a * corrigé * le formatage du code, qui à l'origine n'avait pas assez d'astérisques car certains d'entre eux étaient interprétés pour le formatage en italique. –

Répondre

7

Vous avez besoin d'un * dans la déclaration de arr supplémentaire:

myClass** arr; 

Vous semblez d'essayer de faire un tableau de pointeurs, mais type* est ju st un pointeur vers type/tableau de type.

1

Vous déclarer arr comme un pointeur vers un myClass. arr[a] est un déréférencement; c'est la même chose que *(arr+a) qui est une référence à myClass, pas un pointeur.

-2

Il dit ce que cela signifie que vous essayez d'assigner myClass ** à myClass * qui est interdit sans un casting. Des regards de celui-ci la ligne de code en question devrait lire

arr = new myClass[myClassSize];//note the lack of star 

Cela créerait un tableau d'objets myClass.

Il y a une certaine quantité d'ambiguïté entre les tableaux et les pointeurs en C++ dans ce cas le tableau retourné par la nouvelle est déjà susceptible d'être affecté à un pointeur.

si vous voulez faire un tableau de pointeurs alors vous devez l'étoile sur la définition de arr pour faire un pointeur vers des pointeurs de maclasse.

+1

Non, le questionneur essaie de mettre myClass * (le résultat de 'new myClass') dans le tableau dans la boucle, donc il est beaucoup plus probable que myClass \ ** soit ce dont vous avez besoin. –

Questions connexes