我有一个字符串类,毫不奇怪,根据是否启用UNICODE,使用不同的实现。
#ifdef UNICODE
typedef StringUTF16 StringT;
#else
typedef StringUTF8 StringT;
#endif
这很好用但我目前有一个问题,我需要转发声明StringT typedef。我怎么能这样做?
我无法做typedef StringT;
所以它使前瞻性声明变得棘手。是否可以执行此typedef类型的前向声明,而不必将上面的代码放到头文件的顶部?
答案 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
吗?