如何转发声明已进行 typedef 的类?
我有一个字符串类,毫不奇怪,它根据是否启用 UNICODE 使用不同的实现。
#ifdef UNICODE
typedef StringUTF16 StringT;
#else
typedef StringUTF8 StringT;
#endif
这很好用,但我目前遇到一个问题,我需要转发声明 StringT typedef。 我怎样才能做到这一点?
我无法执行 typedef StringT; ,因此它使前向声明变得棘手。 是否可以对这个 typedef 类型进行前向声明,而不必将上面的代码粘贴到头文件的顶部?
I have a string class that, unsurprisingly, uses a different implementation depending on whether or not UNICODE is enabled.
#ifdef UNICODE
typedef StringUTF16 StringT;
#else
typedef StringUTF8 StringT;
#endif
This works nicely but I currently have a problem where I need to forward declare the StringT typedef. How can I do this?
I can't do typedef StringT;
so it makes forward declaration tricky. Is it possible to do a forward declare of this typedef'd type without having to past the code above into the top of the header file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你不能。 (理性:您可以使用 typedef 来定义基本类型的别名,并且根据精确类型,这些别名可能会使用不同的 ABI 约定)。
您不能转发声明 StringUTF16 和 StringUTF8 然后使用您的
#idef
吗?You can't. (Rational: you can use typedef to define an alias for a basic type and those may use different ABI conventions depending on the precise type).
Can't you forward declare both StringUTF16 and StringUTF8 and then use your
#idef
?遵循 iosfwd 标准标头设置的示例。 编写一个包含此内容的头文件,并将其命名为 StringTFwd.h
至少这是可重用的,并且不会使引用它的头文件变得丑陋。
Follow the example set by the iosfwd standard header. Write a header file that contains this, and call it StringTFwd.h
At least this is reusable and doesn't ugly up the headers that refer to it.