围绕"未定义/无效"枚举C++的C++设计

GOR*_*GOR -2 c++ enums c++03

假设我有以下枚举.

enum VehicleType
{
    CAR,
    PLANE,
    UNDEFINED
};
Run Code Online (Sandbox Code Playgroud)

现在在Vehicle中(想象一个具有VehicleType变量的简单类); 默认构造函数我必须为车辆分配一些车型.不知道它是什么,我不想把它称为汽车或飞机,所以我称之为未定义.

这会给枚举用户带来负担,因为他们必须考虑如何处理未定义的类型.如果我想摆脱UNDEFINED,我在C++ 03中的选择是什么?

我可以考虑重新设计,以便默认构造函数根本不可用,但由于大局,这似乎不太可行.

编辑:这个问题比问题复杂得多.但问题的答案是正确的,所以我会接受.:)

swe*_*ato 7

VehicleCar和创建一个名为base的子类Plane.这样你完全摆脱了枚举.