Condividi tramite


Errore del compilatore C2228

l'elemento a sinistra di '.identifier' deve avere una classe, struttura o unione

L'operando a sinistra del punto (.) non è una classe, una struttura o un'unione.

L'esempio seguente genera l'errore 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
}

Questo errore si verifica anche se si usa una sintassi non corretta quando si usano le estensioni gestite. Mentre in altri linguaggi di Visual Studio è possibile usare l'operatore dot per accedere a un membro di una classe gestita, un puntatore all'oggetto in C++ significa che è necessario usare l'operatore -> per accedere al membro:

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

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