다음을 통해 공유


컴파일러 오류 C2819

'type' 형식에 오버로드된 멤버 'operator ->'가 없습니다.

이 포인터 작업을 사용하려면 정의 operator->() 해야 합니다.

다음 샘플에서는 C2819를 생성합니다.

// C2819.cpp
// compile with: /c
class A {
   public:
      int i;
};

class B {};

void C(B j) {
   j->i;   // C2819
}

class D {
   A* pA;

   public:
      A* operator->() {
         return pA;
      }
};

void F(D j) {
   j->i;
}

C2819는 참조 형식에 C++ 스택 의미 체계를 사용할 때도 발생할 수 있습니다. 다음 샘플에서는 C2819를 생성합니다.

// C2819_b.cpp
// compile with: /clr
ref struct R {
   void Test() {}
};

int main() {
   R r;
   r->Test();   // C2819
   r.Test();   // OK
}