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


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

недопустимая ссылка на нестатический член identifier

Замечания

Возможные причины:

  1. Нестатический член используется в статической функции-члене. Для доступа к нестатическому члену необходимо передать или создать локальный экземпляр класса и использовать оператор доступа к члену (. или ->).

  2. Указанный идентификатор не является членом класса, структуры или объединения. Проверьте написание идентификатора.

  3. Оператор доступа к члену ссылается на функцию, не являющуюся членом.

Пример

  1. В следующем примере создается C2597 и показано, как исправить его:
// C2597.cpp
// compile with: /c
struct s1 {
   static void func();
   static void func2(s1&);
   int i;
};

void s1::func() {
   i = 1;    // C2597 - static function can't access non-static data member
}

// OK - fix by passing an instance of s1
void s1::func2(s1& a) {
   a.i = 1;
}