Typedef класс с конкретным аргументом конструктора - PullRequest
4 голосов
/ 15 марта 2012

Давайте начнем с простого класса в C ++:

class aClass {
        bool b;
        aClass(bool x){b=x;} 
};

Можно ли ввести по умолчанию 2 новых типа stateTrue и stateFalse, так что если я сделаю:до:

aClass  variable(true); 

?

Ответы [ 3 ]

5 голосов
/ 15 марта 2012

Альтернативой наследования может быть aClass a template:

template <bool T>
class aClass
{
public:
    bool b;
    aClass(): b(T) {}
};

typedef aClass<true>  stateTrue;
typedef aClass<false> stateFalse;
0 голосов
/ 15 марта 2012

Ближайшим будет

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
};
0 голосов
/ 15 марта 2012

Нет, потому что это экземпляр, а не тип.

Вы можете получить:

class stateTrue: public aClass {
public:
    stateTrue() : aClass(true) {}
};
...