簡體   English   中英

標識符“ xxx”未定義,類指針和結構

[英]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和你被允許有一個指針或引用BA 您可以將代碼更改為:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM