簡體   English   中英

如何在C ++中預先聲明一個typedef類

[英]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.

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