• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

为什么会出现错误?一个比较复杂的问题,可能和多继承、泛型有关 -=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应该是模板类实例化后的类名
...全文
9 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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里面的所有虚函数
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2003-12-03 11:34
社区公告

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