2010-04-01 6 views
2

J'ai 1 erreur de compilation. Il est de cette ligne dans mon code:Utilisation non valide de 'void' en C++ lors de l'utilisation de struct et classes

cout << myClass->Get_Type().description; 

Où que get_type() est:

void Tile::Get_Type() { 
    return &myStruct; 
} 

Je ne suis pas sûr de ce que je fais mal. Ou quoi d'autre pourrait mal tourner.

+5

@rmeador: Gardez à l'esprit que l'anglais n'est pas la langue principale de tout le monde. – GManNickG

+0

@Gman: Je suis tout à fait conscient de cela. ça ne l'excuse pas. Les mots-clés de langue sont en anglais, et nous ne tolérons pas les fautes d'orthographe là-bas!Si vous voulez écrire le code dans votre langue maternelle non anglaise, allez-y, mais je m'attends à ce que peu importe la langue que vous utilisez, vous épelez correctement les choses. – rmeador

+3

@rmeador: un identifiant est juste une chaîne de lettres. C'est agaçant, bien sûr, tout comme je trouve ennuyeux que tout le monde épelle "couleur" comme "couleur" dans les identifiants, mais vous devez vivre avec ces choses. Tim Berners-Lee * est en fait l'anglais *, et il y a toujours une erreur d'orthographe dans presque toutes les requêtes HTTP ("Referer" au lieu de "Referrer"). Trop tard pour le réparer maintenant, mais ce n'est pas la fin du monde. Par tous les moyens signaler des erreurs, mais je pense qu'il est possible d'aller trop loin avec "ça m'énerve toujours". Sauf si vous payez, c'est: alors les gens peuvent se concentrer sur vos haines autant que vous voulez ;-) –

Répondre

7

Une fonction avec un type de retour de void ne peut rien retourner (c'est ce que le void signifie: la fonction ne renvoie rien). Vous essayez de retourner quelque chose (l'adresse de myStruct).

Vous avez besoin soit de retourner rien (à savoir changer votre retour à être juste return; ou supprimer complètement) ou modifier le type de retour de la fonction de void à un pointeur vers quel que soit le type de myStruct est.

0

Vous essayez de renvoyer un objet à partir d'une fonction définie comme n'ayant aucun type de retour.

Que devrait renvoyer Get_Type? Il semble que vous essayez de renvoyer une adresse à myStruct. Si cela est prévu, vous avez besoin de votre définition de fonction pour ressembler à ceci:

TypeOfMyStruct* Tile::Get_Type() { 
return &myStruct; 
} 

Remplacer « TypeOfMyStruct » avec le type réel de myStruct.

Si vous ne voulez rien retourner, il suffit de supprimer la ligne return &myStruct; et cela va résoudre votre problème. Cependant, je soupçonne que ce n'est pas le cas.

1

Get_Type renvoie la valeur vide. Donc, ça ne peut pas être une structure avec un élément nommé discription. Ou description.

Vous avez besoin, au lieu

TypeOfMyStruct * Tile::Get_Type() { ... } 

Et vous avez besoin:

foo->GetType()->description 

parce que c'est un pointeur que vous voulez revenir, pas une référence.

2

Votre méthode Get_Type() a le type de retour void alors qu'elle devrait avoir le type de retour de myStruct.

Si votre struct est déclarée comme ceci:

struct S { 
    char* description; 
} 

votre get_type doit retourner un pointeur de type S:

S* Tile::Get_Type(){ 
    return &myStruct; 
} 

en supposant que myStruct est déclarée comme:

S myStruct; 

dans la déclaration de classe.

+0

Vous pouvez formater votre code en le mettant en retrait de 4 espaces ou en le sélectionnant et en cliquant sur le bouton '010' ... Il y a aussi un balisage en ligne etc., voir l'aide à la modification pour plus d'informations. –

+0

Merci, je savais que c'était là mais le javascript créant les boutons d'édition était déjà bloqué. – MKroehnert

Questions connexes