Sdílet prostřednictvím


Chyba kompilátoru C2228

Levý operand '.identifier' musí být třída/struktura/unie.

Poznámky

Operand nalevo od tečky (.) není třída, struktura nebo sjednocení.

Example

Následující příklad vygeneruje 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
}

Tato chyba se zobrazí také v případě, že při použití spravovaných rozšíření použijete nesprávnou syntaxi. Zatímco v jiných jazycích sady Visual Studio můžete použít operátor tečky pro přístup k členu spravované třídy, ukazatel na objekt v jazyce C++ znamená, že pro přístup k členu musíte použít operátor -> :

Nesprávný: String * myString = checkedListBox1->CheckedItems->Item[0].ToString();

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