Erreur du compilateur C2228

la partie gauche de '.identifier' doit avoir un class/struct/union

L’opérande à gauche de la période (.) n’est pas une classe, une structure ou une union.

L’exemple suivant génère l’erreur 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
}

Vous recevez également cette erreur si vous utilisez une syntaxe incorrecte lors de l’utilisation des Extensions managées. Alors que dans d’autres langages Visual Studio, vous pouvez utiliser l’opérateur point pour accéder à un membre d’une classe managée, un pointeur vers l’objet en C++ signifie que vous devez utiliser l’opérateur -> pour accéder au membre :

Incorrect : String * myString = checkedListBox1->CheckedItems->Item[0].ToString();

Correct : String * myString = checkedListBox1->CheckedItems->Item[0]->ToString();