怎样从CObject派生一个类后,就不让它在派生了?

thskkk 2009-04-22 06:07:43
例如class A:public CObject,我希望A不作为其他类的基类,怎么解决?因为项目需要用到一个这样特殊的类。
...全文
192 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hityct1 2009-04-25
  • 打赏
  • 举报
回复
13楼的方法能实现静态创建吗?
thskkk 2009-04-24
  • 打赏
  • 举报
回复
我想要的是单继承,保持MFC 的风格。
另外,如果多继承,那么进行动态创建呢?
thskkk 2009-04-24
  • 打赏
  • 举报
回复
CSDN强人啊,谢谢,过几天结贴,看还有没有更强悍的方法,真是开眼界了啊
sharp0309 2009-04-24
  • 打赏
  • 举报
回复
13楼方法完全可以实现楼主的要求!!!
jameshooo 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 thskkk 的回复:]
那我连一个这样的对象都不能生成了,除非用友元
[/Quote]

使用静态函数创建类实例。

class A : public CObject
{
private:
A();

public:
static A* New() { return new A; }
......
};

A* pa = A::New();
pa->foo();
wangyadong 2009-04-24
  • 打赏
  • 举报
回复
肯定不是使构造函数私有化,lz要的是不能作为基类,而不是不能构造对象,8楼可以考虑
力为 2009-04-24
  • 打赏
  • 举报
回复
多继承,就没办法进行动态创建了。
除了私有构造函数,从技术上就没办法了。只能告诉用这个类的人不能继承。
hityct1 2009-04-23
  • 打赏
  • 举报
回复

这个可以,利用友元和虚继承:

class unable_derived
{
friend class A;
unable_derived()
{
}
};

class A:public CObject, private virtual unable_derived
{
};

class B: public A
{
};

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("错误: MFC 初始化失败\n"));
nRetCode = 1;
}
else
{
// TODO: 在此处为应用程序的行为编写代码。
A aa;
B bb;
}

return nRetCode;
}


参考:
http://www.research.att.com/~bs/bs_faq2.html#no-derivation
http://dev.csdn.net/article/14/14193.shtm
youhao1999 2009-04-23
  • 打赏
  • 举报
回复
好像挺有难度的
bitxinhai 2009-04-22
  • 打赏
  • 举报
回复
设置为私有继承!!!!!!!!
fanchangyong 2009-04-22
  • 打赏
  • 举报
回复
java中可以声明成final类,不知道C++中可不可以在class前边加const?
thskkk 2009-04-22
  • 打赏
  • 举报
回复
那我连一个这样的对象都不能生成了,除非用友元
w382120035 2009-04-22
  • 打赏
  • 举报
回复
ding
tianya0609 2009-04-22
  • 打赏
  • 举报
回复
将类的构造函数的访问权限设置为私有的,建立LZ去看effective和exception系列的书
zyq5945 2009-04-22
  • 打赏
  • 举报
回复
一个类不能被继承,也就是说它的子类不能构造父类,这样子类就没有办法实例化整个子类从而实现子类无法继承父类。我们可以将一个类的构造函数声明为私有,使得这个类的构造函数对子类不可见,那么这个类也就不能继承了。
http://blog.csdn.net/lazy_tiger/archive/2008/03/28/2224899.aspx
thskkk 2009-04-22
  • 打赏
  • 举报
回复
翻了好几本书也没有找到答案

16,471

社区成员

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

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

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