主类.h:
namespace Alpha{ enum class Parameters; }
namespace Beta { enum class Parameters; }
MainClass{
public:
enum class Type{ Type_A, Type_B };
MainClass(const Type t);
void DoStuff(const Parameters p);
private:
void doesStuff(const int p_val);
};
主类.cpp:
/* define values for Alpha::Parameters, Beta::Parameters here or elsewhere, and included */
MainClass::MainClass(const Type t){
/* not sure how to do this. But essentially by switching based on 't' use either Alpha::Parameters or Beta::Parameters */
}
MainClass::DoStuff(const Parameters p){
int p_value = static_cast<int>(p);
doesStuff(p_value);
}
这就是我希望能够做到的。这可能吗?实际上,如果enum 类表现得像一个具有继承的类,那就太好了,但我知道我不能那样做。我尝试重写的次数越多,它就会一直螺旋式上升,直到我几乎要为每个案例编写特定的类(我在示例中不止两个)。但是代码非常相似,真的。
我也知道另一种选择是允许DoStuff(const Parameters p)只是一个DoStuff(const int p_val)并在外部进行静态转换......但是我必须在其他地方进行所有静态转换,我不'没有得到很好的枚举类类型检查。
如果不可能,那很好……但如果是这样,那就太糟糕了。