请问关于多继承的问题

rockswang 2001-08-09 11:39:18
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吗?

...全文
91 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rockswang 2001-08-09
  • 打赏
  • 举报
回复
呵呵,真是不好意思,最近一直在忙别的,
那个图像库只把代码编的差不多了,写文章真是太吃力了,
不过 babysloth(小懒虫虫) 兄还记着这件事,我可真是荣幸呀:)

我想抽时间还是会完成它的,善始善终嘛。
再次多谢
babysloth 2001-08-09
  • 打赏
  • 举报
回复
石子儿兄的图象讲座如何了?
C++是追求尽可能的封装和效率,所以不加声明的一般都是private。
gigix 2001-08-09
  • 打赏
  • 举报
回复
缺省的继承方式应该是private吧?class的缺省都是private。
rockswang 2001-08-09
  • 打赏
  • 举报
回复
呀,真的,原来和java是不一样的呀,
真是不好意思:)
缺省的继承方式是protected吗?
ed9er 2001-08-09
  • 打赏
  • 举报
回复
格式错误而已 :)

public IInterface1, public IInterface2

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧