[英]How to pre-declare a typedef class in C++
例如,類A具有類B的成員。通常,為了最小化編譯依賴性,我們經常使類A包含B的指針,並在類A的聲明中預先聲明類B. 看起來像這樣:
//B.h
class B
{
....
};
//A.h
class B;
class A
{
B*b;
A();
...
};
//A.cpp
#include "B.h"
A::A()
{
b=new B();
...
};
但現在我有一個問題:如果使用typedef定義B類,如下所示:
typedef class
{
....
}B;
在這種情況下,先前預先聲明的方法將不起作用。 我應該如何在Ah中預先聲明B類?
在代碼typedef class { .... } B;
,它是一個未命名的類, B
是未命名類的類型別名。
如果沒有定義它,就不可能聲明一個未命名的類(即提供類主體); 並且無法聲明B
是未命名類的typedef。
沒有typedef的前向聲明這樣的東西。 通常,typedef可以聲明稍后完成的不完整類型的別名,但是未命名的類不能填充這些角色中的任何一個。
根據選民的反饋意見刪除了進一步的建議
注意:該問題使用術語“預申報”。 C ++標准不使用術語“預先聲明”或更常見的術語“前向聲明”。 在標准的術語中,類的前向聲明簡稱為類聲明。 如果從上下文中已經不清楚,可以通過說“不是定義的聲明”來澄清這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.