次の方法で共有


コンパイラ エラー C2228

'.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();