컴파일러 오류 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
}