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


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

member: невозможно получить адрес нестатических данных-члена или метода управляемого типа или типа WinRT

Замечания

Экземпляр необходим, чтобы получить адрес нестатических элементов данных управляемого типа класса или интерфейса и класса или интерфейса WinRT.

Example

В следующем примере создается C2843 и показано, как исправить его:

// C2843_2.cpp
// compile with: /clr
public ref class C {
public:
   int m_i;
};

ref struct MyStruct {
   static void sf() {}
   void f() {}
};

int main() {
   MyStruct ^ps = gcnew MyStruct;
   void (__clrcall MyStruct::*F1)() = & MyStruct::f;   // C2843
   void (__clrcall MyStruct::*F2)() = & ps->f;   // C2843
   void (__clrcall MyStruct::*F3)();   // C2843

   void (__clrcall *F5)() = MyStruct::sf;   // OK
   void (__clrcall *F6)() = & ps->sf;   // OK

   interior_ptr<int> i = &C::m_i; // C2843
   C ^x = gcnew C();
   interior_ptr<int> ii = &x->m_i;
}