寻找子类的方法
C++当中有没有一个方法,可以用来判断某两个类之间是父子关系的方法呢?
[解决办法]
对于有虚函数或者父类中有虚函数的类,可以使用dynamic_cast操作符。
class A{ virtual int a() { return 0; };};class B{ virtual char b() { return 0; };};A* pA = new A;B* pB = dynamic_cast<B*>(pA);if (0 == pB){ cout << "B is not parent of A" << endl;}
[解决办法]
楼主需要一本《modern c++ design》认真研究
[解决办法]
template <typename T, typename TBase> class TIsDerived { public: static int t(TBase* base) { return 1; } static char t(void* t2) { return 0; } enum { Result = (sizeof(int) == sizeof(t((T*)NULL))), }; };class A{ };class B : public A{ };int main(int argc, char *argv[]){ if (TIsDerived<B, A>::Result) cout << "Yes" << endl; system("PAUSE"); return EXIT_SUCCESS;}
[解决办法]
有。类型时类型识别。
[解决办法]
#include <iostream>#include <typeinfo>using namespace std;class A{public: virtual void out();}; class B : public A{public: void out();};void A::out(){ cout << "A" << endl; }void B::out(){ cout << "B" << endl;}void main(){ B b; A a; cout << typeid(b).name() << endl; if(typeid(a).before(typeid(b))) { cout << "YES" << endl; }}