[英]identifier “xxx” is undefined, class pointer and struct
我正在編寫一個小型c ++程序,其中包含與以下內容類似的結構:
class A {
B * someObjects;
};
typedef A* APointer;
struct B{
APointer a;
int n;
}
嘗試編譯它會產生“標識符未定義”錯誤,因為在類A內部未知結構B。否則,在類A之前聲明結構B仍應給出類似的錯誤,因為這樣B便不知道APointer或APointer不知道A 。是否有可能使A類和B類成為好朋友? 提前致謝!
您需要轉發聲明B
因為編譯器不知道在A
使用B
時是什么。 B
被認為是不完整的類型在A
和你被允許有一個指針或引用B
在A
。 您可以將代碼更改為:
struct B;
class A {
B * someObjects;
};
typedef A* APointer;
struct B{
APointer a;
int n;
};
您是否聽說過“ 前向宣言”一詞! 您的編譯器還不了解B
因此,請先聲明B
struct B; // forward declaration
class A {
B * someObjects;
};
//... rest of the code
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.