2010-09-28 3 views
1

J'ai un problème avec le pointeur this à l'intérieur d'une classe personnalisée. Mon code ressemble à ceci.Erreurs avec le 'this' pointeur

class Foo{ 
    public: void bar(); bool baz(); 
}; 

bool Foo::baz(){ 
    return true; 
} 
void Foo::bar(){ 
    bool is_baz = (*this).baz(); 
} 

Comme je l'ai dit plus haut, je crois que l'erreur que je reçois (LNK2019) provient de la présente. Je pense qu'il cherche une fonction dans un fichier différent, qu'il ne trouve pas. Y a-t-il un moyen de faire fonctionner ce code, ou dois-je utiliser une sorte de solution de rechange? Si oui, que dois-je faire pour contourner ce problème? Je vous remercie.

+1

Pourquoi n'appelez-vous pas simplement 'baz()'? Quelle est l'erreur exacte émise par l'éditeur de liens? –

+0

Tous les compilateurs C++ n'utilisent pas les mêmes numéros d'erreur. Nommez le compilateur ou donnez le texte du message d'erreur. Je devine à ceci: http://msdn.microsoft.com/en-us/library/799kze2z(v=vs.80).aspx mais c'est seulement une estimation. –

+0

Vous voulez nous dire ce qu'est LNK2019? À quelle ligne se réfère-t-il? Quels symboles sont mentionnés? Ou vous voulez que nous déboguons avec ESP? – abelenky

Répondre

6
class Foo(){ 

Remplacez cette

class Foo{ 

En outre, cela ne devrait pas compiler. Comment avez-vous réussi à obtenir une erreur de lien? Après avoir apporté cette modification, l'éditeur de liens indique undefined reference to 'main', ce qui signifie simplement que vous n'avez pas de fonction main.

+6

Oui, cela suggère fortement que l'extrait de code n'est pas le code réel mais une version réécrite brouillée, ce qui rend très difficile l'aide. –

0

Bien qu'il ne soit pas une erreur, la ligne

bool is_baz = (*this).baz(); 

n'a pas besoin de la partie (*this). Il peut être écrit simplement comme

bool is_baz = baz(); 

Mais, quel est le point de calcul is_baz si elle est ni utilisé, ni retourné?

Questions connexes