gpt4 book ai didi

c++ - 在 C++ 中 : Is it possible to have a named enum be continued in a different file?

转载 作者:搜寻专家 更新时间:2023-10-31 01:23:59 24 4
gpt4 key购买 nike

例如:

基类头文件有:

enum FOO
{
FOO_A,
FOO_B,
FOO_C,
FOO_USERSTART
};

那么派生类有:

enum FOO
{
FOO_USERA=FOO_USERSTART
FOO_USERB,
FOO_USERC
};

只是为了清楚我的用法,它是为了有一个事件处理程序,其中基类有事件,然后派生类可以添加事件。派生类事件处理程序将检查它的事件,如果事件不是针对它的,那么它会将事件传递给基类。

class Base
{
public:
virtual void HandleFoo(FOO event);
};

class Derived: public Base
{
public:
void HandleFoo(FOO event);
};


void Base::HandleFoo(FOO event)
{
switch(event)
{
case FOO_A:
/* do stuff */
break;
case FOO_B:
/* do stuff */
break;
case FOO_B:
/* do stuff */
break;
}
}

void Derived::HandleFoo(FOO event)
{
switch(event)
{
case FOO_USERA:
/* do stuff */
break;
case FOO_USERB:
/* do stuff */
break;
case FOO_USERB:
/* do stuff */
break;
default:
/* not my event, must be for someone else */
Base::HandleFoo(event);
break;
}
}

最佳答案

没有。编译器需要能够在看到 } 后决定枚举是否适合 char、short、int 或 long。

所以如果基类头有

enum Foo {
A,
B,
MAX = 1<<15
};

编译器可能决定枚举适合 16 位。然后它可以使用它,例如在布置基类时。如果您稍后能够将 1<<31 添加到枚举中,基类枚举成员将无法保存其中一个枚举值。

关于c++ - 在 C++ 中 : Is it possible to have a named enum be continued in a different file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/267367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com