3
是否可以轉發聲明在另一個前向聲明的類中聲明的類?前向聲明的類成員的前向聲明
基本上,我有這樣的事情
//A.h
class A
{
...
struct B
{
...
};
};
,現在我要聲明另一個類這樣
//Q.h
class A;
struct A::B;
class Q
{
A::B* Foo();
};
是否可以轉發聲明在另一個前向聲明的類中聲明的類?前向聲明的類成員的前向聲明
基本上,我有這樣的事情
//A.h
class A
{
...
struct B
{
...
};
};
,現在我要聲明另一個類這樣
//Q.h
class A;
struct A::B;
class Q
{
A::B* Foo();
};
不,不能這樣做。要訪問A
的成員,必須對其進行定義,無論成員是類型,數據還是功能。
難道僅僅編譯上面的代碼並自己嘗試一下很難嗎? – mfontanini 2012-03-14 12:13:29
@fontanini啊。但它可靠地工作嗎?在所有編譯器上?根據標準合法嗎? – 2012-03-14 12:15:06
我嘗試過,自然。編譯器說「使用未定義的類型A」。 – obamator 2012-03-14 12:15:42