嵌套枚举的前向声明
我有类似于以下内容的代码:
class B
{
}
class A
{
enum {
EOne,
ETwo
} EMyEnum;
B myB;
}
我想在类 B 中声明 EMyEnum 类型的成员(在 A 之前声明)。这可能吗?我意识到解决方案是第二个声明 B 类,但为了清楚起见,我不想这样做。
I have code similar to the following:
class B
{
}
class A
{
enum {
EOne,
ETwo
} EMyEnum;
B myB;
}
I want to declare a member of type EMyEnum in class B (which is declared before A). Is this possible? I realise the solution is to declare class B second, but for clarity I would prefer not to.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是不可能的......但它可以通过继承滥用来伪造:)
另一方面......你为什么不简单地转发声明 B ?
当然,您实际上需要编写 A 的所有通常“默认生成”的方法,但是嘿,这并没有花费那么多!
It's not possible... but it can be faked with inheritance abuse :)
On the other hand... why don't you simply forward declare B ?
Sure you need to actually write all the normally "default generated" methods of A, but hey that does not cost so much!
当前的 C++ 标准不允许前向声明枚举,尽管它们将出现在即将推出的 C++0x 标准中。
请参阅此处了解更多信息。
The current C++ standard does not allow forward declarations of
enum
s, although they will be coming in the upcoming C++0x standard.See here for more info.
您可以将 A 声明为 B 的模板参数。
解决这个问题的第二种方法是使用 int - 众所周知,c++ 枚举是 int。
You can declare A as template paramater of B.
Second way to solve it is using int - it is known that c++ enum is int.