回 帖 发 新 帖 刷新版面

主题:可以获得父类指针,什么方法可以得到该父类子类的子类的指针?

我现在编程,利用到一个库。现在可以得到该库中一个父类的指针,我想得到该父类的子类的子类的指针,有什么方法吗?可以强制转换吗?怎么做,求赐教!!!!

回复列表 (共8个回复)

沙发

貌似父类指针能指向这个孙类的实例,等cxx来解释……

板凳


是无法实现这个问题吧?我现在是这样认为的

3 楼

这个问题不是很明确。真的。不过为什么不把问题分解开呢,我觉得这个问题,好似提的都不怎么明确。应该和库本身关系不大。看看C++是如何处理类似的问题吧。

4 楼

说明白为什么需要这么做,和到底想要做什么吧

5 楼

[quote]
是无法实现这个问题吧?我现在是这样认为的[/quote]

恩?!
你给我具体问题,我给你把它变成代码。:)

6 楼

子类的子类,也是可以通过static_cast、dynamic_cast来做的。C风格的转换也可以,它的效果与static_cast一样。

顺便一提,reinterpret_cast看起来也没问题(编译正确,很多时候运行好像也正确),但是却是没有保证的。标准没有规定这样做会得到正确结果,事实上,用VC做实验,如果C继承了A, B,则reinterpret_cast把B*转化为C*会出错,而static_cast和dynamic_cast则不会出错。
如果先把B*转化为void*,再把void*通过static_cast转化为C*。则行为与reinterpret_cast类似,会出现错误。

[code=c]class A
{
public:
    virtual ~A() {}
};

class B : public A
{
};

class C : public B
{
};

int main()
{
    A* p = new C;
    C* p1 = static_cast<C*>(p);
    C* p2 = dynamic_cast<C*>(p);
    delete p;
    return 0;
}[/code]

7 楼

问题已解决,谢谢大家关心!

8 楼

我是个看贴回贴的人!

我来回复

您尚未登录,请登录后再回复。点此登录或注册