求看看这段代码拿错了
vc6.0 编译器
struct IU{
virtual void QI(void ** p)=0;
};
struct IA :public IU
{
virtual void func() =0;
};
struct IB :public IU
{
virtual void func()=0;
};
class TvShow : public IA,public IB
{
public:
void IA::func()
{
printf("IA func");
}
void IB::func()
{
printf("IB func");
}
void QI(void**p)
{
*p=(IA*)this;
}
};
void fun()
{
TvShow c;
IB *pB=&c;
IA *pA;
pB->QI((void **)&pA);
pB->func();
pA->func();
}
[解决办法]
瞎折腾啊这是。
[解决办法]
就是说你两个父类写一样的虚接口,一个子类来继承,这种东西你研究那么起劲,就跟该死的置顶帖里研究
表达式求值顺序一样无聊。一句话解决你心中疑惑,“就别这么写”
[解决办法]
跟对象内存结构有关吧,依赖于编译器
vc正常,gcc下编译就报错了认为IA::func()是对IA func的实现,而不是重写
[解决办法]
先把马步扎瓷实了再说吧,基础都没搞定呢,研究个啥。
类成员函数定义就不能放在别的类定义中。