Ошибка компилятора C2228
слева от ".identifier" должен быть указан класс, структура или объединение
Операнд слева от периода (.) не является классом, структурой или объединением.
Следующий пример приводит к возникновению ошибки 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
}
Эта ошибка также возникает из-за неправильного синтаксиса при использовании управляемых расширений. В то время как в других языках Visual Studio можно использовать оператор dot для доступа к члену управляемого класса, указатель на объект в C++ означает, что необходимо использовать оператор -> для доступа к члену:
Неправильно: String * myString = checkedListBox1->CheckedItems->Item[0].ToString();
Правильно: String * myString = checkedListBox1->CheckedItems->Item[0]->ToString();