C의 "MyMessageBox Does Not Name a Type" 오류
이 오류 메시지는 컴파일러가 유형을 사용하는 클래스 멤버를 발견할 때 발생합니다. 아직 정의되지 않은 것입니다. 예:
class User { public: MyMessageBox dataMsgBox; }; class MyMessageBox { public: void sendMessage(Message *msg, User *recvr); Message receiveMessage(); vector<Message *> dataMessageList; };
이 코드에서 User 클래스에는 아직 정의되지 않은 MyMessageBox 유형의 멤버가 포함되어 있습니다. 컴파일러가 MyMessageBox dataMsgBox; 행에 도달하면 정의에 대한 정보가 없기 때문에 MyMessageBox를 인식할 수 없습니다.
이 오류를 해결하려면 참조하는 클래스가 먼저 정의되었는지 확인해야 합니다. 회원으로 이용하세요. 이는 클래스 선언을 재정렬하여 수행됩니다.
class MyMessageBox { public: void sendMessage(Message *msg, User *recvr); Message receiveMessage(); vector<Message *> dataMessageList; }; class User { public: MyMessageBox dataMsgBox; };
그러나 이 수정은 MyMessageBox가 User를 참조하고 User를 참조하므로 순환 종속성을 도입합니다. 은 MyMessageBox를 의미합니다. 이 순환을 깨기 위해 MyMessageBox의 정의에서 User를 전달 선언할 수 있습니다.
class MyMessageBox { public: void sendMessage(Message *msg, User *recvr); Message receiveMessage(); vector<Message *> dataMessageList; }; class User; // forward declaration of User User dataMsgBox; // now this line is valid
이 전달 선언은 이라는 클래스가 있음을 컴파일러에 알립니다. 전체 정의가 아직 제공되지 않더라도 MyMessageBox가 User에 대한 참조를 보유할 수 있도록 하는 User가 존재합니다.
위 내용은 내 C 코드에서 'MyMessageBox가 유형 이름을 지정하지 않습니다' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!