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

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

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

我做不到 typedef StringT; 所以这使得前向声明变得棘手。是否可以对这个 typedef 类型进行前向声明,而不必将上面的代码粘贴到头文件的顶部?

有帮助吗?

解决方案

按照例如通过iosfwd标准标头集合。收件包含此头文件,并调用它StringTFwd.h

class StringUTF16;
class StringUTF8;

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

至少这是可重复使用的,并且不难看高达引用它的标头。

其他提示

你不能。(合理的:您可以使用 typedef 为基本类型定义别名,并且这些别名可能会根据精确类型使用不同的 ABI 约定)。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top