2012-12-07 4 views
0

Désolé si une question triviale:Précision sur `this` mot-clé

Application 1:

class Foo 
{ 
    protected: int bar; 

    public: Foo(int bar) 
     { 
     this->bar =bar; 
     } 
}; 

Mise en œuvre 2:

class Foo 
{ 
    protected: int bar; 

    public: Foo(int bar) 
     { 
     this.bar =bar; 
     } 
}; 

Sortie de mise en œuvre 2:

request for member ‘x’ in ‘this’, which is of pointer type ‘Foo* const’ (maybe you meant to use ‘->’ ?)

si this est un pointeur, et this question a erreur de syntaxe dans le code

+1

Ceci est quelque chose de fondamental - les pointeurs (bruts) ne peuvent être utilisés qu'avec '->', et pas avec '.'. –

+1

FYI - 'C++' & 'C#' sont deux langues différentes. – user93353

+0

Je viens de Java. Quelque chose est perdu dans la traduction @ user93353 le code est étiqueté C++ && C#. Mon mauvais si – aiao

Répondre

6

La question que vous faites référence contient des exemples de code écrit en C#, C++ non. Oui, en C++, this est un pointeur et doit être déréférencé pour accéder à tous les membres de l'objet vers lequel il pointe.

+0

désolé à ce sujet il a été étiqueté avec C++, donc supposé qu'ils soient les mêmes. Thanx – aiao

+0

En fait c'est un pointeur en C# aussi, mais C# a une sorte de déréférencement automatique :) – BlackBear

+0

@BlackBear Merci, je ne connais aucun C#. Je pense que mon édition ne suggère rien sur C# maintenant. –

Questions connexes