컴파일러 오류 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
}
Managed Extensions를 사용할 때 잘못된 구문을 사용하는 경우에도 이 오류가 나타납니다. 다른 Visual Studio 언어에서는 점 연산자를 사용하여 관리되는 클래스의 멤버에 액세스할 수 있지만 C++의 개체에 대한 포인터는 -> 연산자를 사용하여 멤버에 액세스해야 한다는 의미입니다.
올바르지 않은 코드: String * myString = checkedListBox1->CheckedItems->Item[0].ToString();
올바른 코드: String * myString = checkedListBox1->CheckedItems->Item[0]->ToString();