首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++多重继承

c++多重继承
EN

Stack Overflow用户
提问于 2010-01-28 22:53:14
回答 2查看 344关注 0票数 1

可能重复:

C++ pointer multi-inheritance fun.

more c++ multiple inheritance fun

这是一个在处理ref计数指针基类和线程乐趣时产生的问题。

给予:

代码语言:javascript
复制
class A{int x, y;};
class B{int xx, yy;};
class C: public A, public B {int z;};
C c;
C* pc = &c;
B* pb = CtoB(pc);
A* pa = CtoA(pc);

assert(pc == AtoC(pa));
assert(pc == BtoC(pb));

如何编写CtoB和CtoA来获取C的B&A部分?

我如何编写AtoC和BtoC来取回原来的C?

谢谢!

为什么要结束投票?

我前面的两个问题询问某物是否有效(答案是“否”);这个问题问“做指针转换的有效方法是什么”。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-28 23:02:01

您不需要任何函数,因为C只从A和B派生一次,除非您多次从A或B派生(没有虚拟继承),您只需要使用:

代码语言:javascript
复制
A *pbb = pc;
B *pba = pc;

AtoC和BtoC只有通过以下途径才是安全的:

代码语言:javascript
复制
C *c = dynamic_cast<C*>(a_or_b_pointer);
票数 3
EN

Stack Overflow用户

发布于 2010-01-28 22:58:21

要获得C的B&A部分,您可以尝试:

代码语言:javascript
复制
 B* pbb = static_cast<B*>(pc); 
 A* pba = static_cast<A*>(pc); 

应该是安全的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2158638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档