读书人

寻找子类的方法解决方案

发布时间: 2012-03-08 13:30:13 作者: rapoo

寻找子类的方法
C++当中有没有一个方法,可以用来判断某两个类之间是父子关系的方法呢?

[解决办法]
对于有虚函数或者父类中有虚函数的类,可以使用dynamic_cast操作符。

C/C++ code
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》认真研究
[解决办法]
C/C++ code
    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;}
[解决办法]
有。类型时类型识别。
[解决办法]
C/C++ code
#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;    }} 

读书人网 >C++

热点推荐