Compartilhar via


Erro do compilador C2228

à esquerda de '.identificador', precisa ter classe/struct/união

O operando à esquerda do ponto (.) não é uma classe, estrutura ou união.

O seguinte exemplo gera o erro 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
}

Você também verá esse erro se usar a sintaxe incorreta ao usar Extensões Gerenciadas. Enquanto em outras linguagens do Visual Studio, você pode usar o operador de ponto para acessar um membro de uma classe gerenciada, um ponteiro para o objeto no C++ significa que você precisa usar o operador -> para acessar o membro:

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

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