Как получить тип базового класса в C ++ - PullRequest
0 голосов
/ 07 мая 2018

Предположим, у меня есть следующие классы:

struct baseA {
    virtual int foo() {return 0;}
};
struct baseB {
    virtual int bar() {return 1;}
};

struct derived : public baseA, public baseB {
     typedef std::tuple<baseA, baseB> base_types;    
     virtual int buzz() {return 2;}
};

И я хочу получить базовые классы derived по шаблону, я могу использовать такой код:

template <typename T>
struct basetraits{
       typedef T::base_types types;
};

std::tuple_element<0,basetraits<derived>::types>::type 
std::tuple_element<1,basetraits<derived>::types>::type 

Если я не определяю base_types в классе derived или не использую какой-либо макрос, возможно ли получить baseA и baseB другими методами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...