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

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

这很好用,但是我目前有一个问题,我需要向前声明StringT typedef。我怎样才能做到这一点?

我无法执行typedef StringT;,因此它使前向声明变得棘手。是否可以进行这种类型定义类型的前向声明,而不必将上面的代码粘贴到头文件的顶部?

最佳答案

遵循iosfwd标准 header 设置的示例。编写一个包含该文件的头文件,并将其命名为StringTFwd.h

class StringUTF16;
class StringUTF8;

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

至少这是可重用的,并且不会丑陋引用它的 header 。

07-24 13:31