Поделиться через


Ошибка компилятора C2355

this: может указываться только в нестатических функциях-членах или инициализаторах нестатических членов данных

Указатель this действителен только в нестатических функциях-членах или инициализаторах нестатических членов данных. Эта ошибка может возникнуть, когда неправильно квалифицировано определение области класса для функции-члена вне объявления класса. Эта ошибка также может возникнуть, когда указатель this используется в функции, которая не объявлена в классе.

Чтобы устранить эту проблему, убедитесь, что определение функции-члена соответствует объявлению функции-члена в классе и что она не объявлена как статическая. Для инициализаторов членов данных убедитесь, что член данных не объявлен как статический.

В следующем примере показано возникновение ошибки C2355 и приводятся сведения по ее устранению.

// C2355.cpp
// compile with: /c
class MyClass {};
MyClass *p = this;   // C2355

// OK
class MyClass2 {
public:
   void Test() {
      MyClass2 *p = this;
   }
};