'.identifier' の左側はクラス、構造体、共用体でなければなりません
ピリオド (.) の左側のオペランドは、クラス、構造体、または共用体ではありません。
次の例では C2228 が生成されます。
// C2228.cpp
int i;
struct S {
public:
int member;
} s, *ps = &s;
int main() {
i.member = 0; // C2228 i is not a class type
ps.member = 0; // C2228 ps is a pointer to a structure
s.member = 0; // s is a structure type
ps->member = 0; // ps points to a structure S
}
マネージド拡張を使用する際に、間違った構文を使用した場合も、このエラーが表示されます。 他の Visual Studio の言語ではドット演算子を使用してマネージド クラスのメンバーにアクセスできますが、C++ でのオブジェクトへのポインターは、-> 演算子を使用してメンバーにアクセスする必要があることを意味します。
誤: String * myString = checkedListBox1->CheckedItems->Item[0].ToString();
正: String * myString = checkedListBox1->CheckedItems->Item[0]->ToString();