Erreur du compilateur C2355
'this' : ne peut être référencé qu'à l'intérieur de fonctions membres non static ou d'initialiseurs de données membres non static
Le pointeur this
est valide uniquement à l'intérieur de fonctions membres non static ou d'initialiseurs de données membres non static. Cette erreur peut intervenir quand la portée de classe d'une définition de fonction membre en dehors de la déclaration de classe n'est pas correctement qualifiée. L'erreur peut également se produire quand le pointeur this
est utilisé dans une fonction qui n'est pas déclarée dans la classe.
Pour résoudre ce problème, assurez-vous que la définition de fonction membre correspond à une déclaration de fonction membre dans la classe, et qu'elle n'est pas déclarée static. Pour les initialiseurs de données membres, assurez-vous que les données membres ne sont pas déclarées static.
L'exemple suivant génère l'erreur C2355 et montre comment la corriger :
// C2355.cpp
// compile with: /c
class MyClass {};
MyClass *p = this; // C2355
// OK
class MyClass2 {
public:
void Test() {
MyClass2 *p = this;
}
};