为什么会出现错误?一个比较复杂的问题,可能和多继承、泛型有关 -=100分=-

Colin-Han 2003-12-03 11:34:08
error C2247: 'delete' not accessible because "xxxxxx" 'public' to inherit from 'CModel'

这个错误是怎么回事?我的程序是这样的:
class CClass1:public CObject; 实现了Dynamic
class CInterface1; 这是一个抽象类,没有任何实现,只是定义了一些纯虚的函数
template <class T> class CClass2 : public T, CInterface1;
class CClass3: public CClass2<CClass1>; 实现了Dynamic;

当程序调用:
CClass1 o = new CClass3();
产生上面的编译时错误(其中的xxxxxx应该是模板类实例化后的类名
...全文
29 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chehw 2003-12-17
  • 打赏
  • 举报
回复
你的这一句可能有错误。
CClass1 o = new CClass3();

如果改用CClass3 *o=new CClass3; 应该没问题。
或者声明时用class CClass3: public CClass2<CClass1>, CObject;试一试
Colin-Han 2003-12-17
  • 打赏
  • 举报
回复
这个问题真的很难吗?
flinming 2003-12-03
  • 打赏
  • 举报
回复
Cok *okdlg = new Cok ;
okdlg->Create(IDD_OK);
okdlg->ShowWindow(SW_SHOW);
Colin-Han 2003-12-03
  • 打赏
  • 举报
回复
我将中间的一层模板类去掉,就一切OK了,考虑是不是因为这个模板类没有实现Dynamic?感觉不像,希望有经验的朋友一起讨论一下。

眼前,可能只能先把他去掉了,完成工作是首要的!!!!呵呵!!!
Colin-Han 2003-12-03
  • 打赏
  • 举报
回复
这些我都已经检查过了,所有纯虚函数都被重载过了,而且两种情况报的错应该不一样
dailiangcm 2003-12-03
  • 打赏
  • 举报
回复
应该是纯虚函数的问题
有纯虚的函数的类是不能直接生成对象的,应该在派生类里面重栽基类里面的纯虚函数

也就是说你在定义CClass2的时候,必须在CClass2里面重栽CInterface1里面的所有虚函数

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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