我從問題的答案Forward declare a class's public typedef in c++瞭解,前宣佈一些東西,可以在C的typedef是不可能++。正向聲明可能的typedef的C++ 0x
在C++ 0x中可以做這個問題嗎?
否則,進行更改,如:
class X {...};
typedef X Z;
到
class Y {...};
typedef Y Z;
休息客戶端代碼。
我覺得不應該是這樣,因爲類型定義的一點是,他們應該做的基本類型對客戶透明,所以你可以改變而不會破壞客戶端代碼執行。
澄清
基本上,可以說,我們有可以有兩種選擇:
class X {...};
typedef X Z; // (1)
OR
class Z {...}; // (2)
我希望能夠在客戶端代碼做到這一點:
class Z; // Or something of this effect, sadly this fails in the case of (1)
而且無論Z是typedef還是類(對於客戶端來說都應該是透明的),該代碼都不需要更改。
這還不清楚。這個問題是關於類中的typedef聲明的,我想說解決方案是用一個名稱空間替換或增加類。你不能將聲明任何東西轉發爲其他任何東西,所以'class'不能作爲'typedef'聲明。這更像你所問的嗎? – Potatoswatter 2011-04-02 04:48:50
嗨Potatoswatter,我試圖澄清這個問題。 – Clinton 2011-04-02 04:55:35
真的很不錯的庫編寫者爲他們的客戶端提供公共類型和轉發,因此客戶端永遠不需要手動管理它。客戶端只包含庫的類型頭。這也很好,所以你的庫頭不會有所有的轉發噪音。轉發和typedefs在編譯時不需要花費任何東西 - 只需將公共類型放在那裏即可。 – justin 2011-04-02 04:56:07