我如何转发声明一个已经被typedef的类?

时间:2009-08-05 15:35:33

标签: c++ typedef forward-declaration

我有一个字符串类,毫不奇怪,根据是否启用UNICODE,使用不同的实现。

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

这很好用但我目前有一个问题,我需要转发声明StringT typedef。我怎么能这样做?

我无法做typedef StringT;所以它使前瞻性声明变得棘手。是否可以执行此typedef类型的前向声明,而不必将上面的代码放到头文件的顶部?

2 个答案:

答案 0 :(得分:8)

按照iosfwd标准标题设置的示例进行操作。编写包含此文件的头文件,并将其命名为StringTFwd.h

class StringUTF16;
class StringUTF8;

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

至少这是可重用的,并不会丑化引用它的标题。

答案 1 :(得分:2)

你做不到。 (Rational:您可以使用typedef为基本类型定义别名,并且可以根据精确类型使用不同的ABI约定。)

你不能转发声明StringUTF16和StringUTF8,然后使用你的#idef吗?