2009-08-05 52 views
2

我有一個字符串類,不出所料,根據是否啓用UNICODE使用不同的實現。我如何轉發聲明已經typedef'd的類?

#ifdef UNICODE 
typedef StringUTF16 StringT; 
#else 
typedef StringUTF8 StringT; 
#endif 

這很好,但我目前有一個問題,我需要轉發聲明StringT typedef。我怎樣才能做到這一點?

我不能這樣做typedef StringT;所以它使得前置聲明棘手。是否有可能做這種typedef'd類型的前向聲明,而不必將上面的代碼放到頭文件的頂部?

回答

8

按照iosfwd標準頭設置的示例進行操作。編寫包含此頭文件,並將其命名爲StringTFwd.h

class StringUTF16; 
class StringUTF8; 

#ifdef UNICODE 
typedef StringUTF16 StringT; 
#else 
typedef StringUTF8 StringT; 
#endif 

至少這是重複使用,不難看了起來引用它的頭。

+0

好吧......那就是我所害怕的。乾杯:) – Goz 2009-08-05 16:51:45

2

你不行。 (Rational:你可以使用typedef爲基本類型定義一個別名,並且這些可以根據精確的類型使用不同的ABI約定)。

你不能轉發聲明StringUTF16和StringUTF8,然後使用你的#idef