2013-05-29 4 views
1

Возможно, это, возможно, вообще невозможно. Я хочу знать, есть ли способ получить все классы, которые наследуют друг друга. Somthing так:Получение всех унаследованных классов класса

#include <iostream> 
class A{ 
public: 
static string getChildren(); //<- magic function 
}; 

class B: A{}; 

class C: A{}; 

void main(){ 

    cout<< A.getChildren(); 


} 

=========================== Выход =========== ======================

B C 
+0

Невозможно сделать это автоматически. –

+0

Я бы предположил: не представляется возможным, поэтому grep через код с помощью команды 'grep -Rn '[a-zA-Z] \ +: A \>" ' – flaschenpost

+0

В зависимости от того, что вы хотите сделать, вы, вероятно, классы каким-то образом регистрируются в вашем базовом классе. Однако для этого нет автоматического пути. – arne

ответ

0

Это невозможно. Имейте в виду, что разные модули могут наследоваться от определенных вами классов. Невозможно отслеживать это из базового класса.

+0

Если все находятся в одном файле даже с некоторой командой компилятора («#»)? – user223506

+0

Я боюсь, что нет. –

1

Это невозможно. В других модулях могут быть выделены классы, к которым getChildren не всегда имеет доступ.

Смежные вопросы