コンパイラ エラー 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
}