让我们从C ++中的一个简单类开始:
class aClass {
bool b;
aClass(bool x){b=x;}
};
是否可以输入2个新类型stateTrue和stateFalse,以便我这样做:
stateTrue variable;
它会转化为:
aClass variable(true);
答案 0 :(得分:5)
继承的替代方法可以是aClass
template
:
template <bool T>
class aClass
{
public:
bool b;
aClass(): b(T) {}
};
typedef aClass<true> stateTrue;
typedef aClass<false> stateFalse;
答案 1 :(得分:0)
不,因为那是一个实例,而不是一个类型。
你可以推导出:
class stateTrue: public aClass {
public:
stateTrue() : aClass(true) {}
};
答案 2 :(得分:0)
最接近的是
class stateTrue : // new type needed, not just a new name
public aClass { // but obviously can be converted to aClass
public: stateTrue() : aClass(true) { } // Default ctor sets aClass base to true
};