Compartir a través de


Error del compilador C2228

El operando izquierdo de '.identificador' debe tener class/struct/union

El operando situado a la izquierda del punto (.) no es una clase, una estructura o una unión.

El ejemplo siguiente genera la advertencia 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
}

También verá este error si usa una sintaxis incorrecta al usar extensiones administradas. Mientras que en otros lenguajes de Visual Studio, puede usar el operador punto para tener acceso a un miembro de una clase administrada, un puntero al objeto en C++ significa que debe usar el operador -> para obtener acceso al miembro:

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

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