可能重复:
C++ pointer multi-inheritance fun.
more c++ multiple inheritance fun
这是一个在处理ref计数指针基类和线程乐趣时产生的问题。
给予:
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?
谢谢!
为什么要结束投票?
我前面的两个问题询问某物是否有效(答案是“否”);这个问题问“做指针转换的有效方法是什么”。
发布于 2010-01-28 23:02:01
您不需要任何函数,因为C只从A和B派生一次,除非您多次从A或B派生(没有虚拟继承),您只需要使用:
A *pbb = pc;
B *pba = pc;AtoC和BtoC只有通过以下途径才是安全的:
C *c = dynamic_cast<C*>(a_or_b_pointer);发布于 2010-01-28 22:58:21
要获得C的B&A部分,您可以尝试:
B* pbb = static_cast<B*>(pc);
A* pba = static_cast<A*>(pc); 应该是安全的。
https://stackoverflow.com/questions/2158638
复制相似问题