请问关于多继承的问题
class IInterface1 {
public:
virtual void foo1() = 0;
};
class IInterface2 {
public:
virtual void foo2() = 0;
};
class CImpl : public IInterface1, IInterface2 {
public:
void foo1() {...}
void foo2() {...}
} anImpl;
void Function1(IInterface1* i) {...}
void Function2(IInterface2* i) {...}
void main() {
Function1(&anImpl);
Function2(&anImpl); //--------(1)
}
想采用接口继承的方式来开发程序,上面的程序理论上应该是没有问题的,
但在VC里编译在位置(1)会报错,必须加上强制类型转换,而这样也同样会出一个warning:warning C4243: type cast conversion from 'class CImpl*' to 'class IInterface2 *' exists, but is inaccessible。
难道只要用到接口继承就得要忍受这个warning吗?