编译怎么会出现这样问题?

Q54739616 2009-08-09 12:04:22
error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
\afx.h(551) : 参见“CObject::CObject”的声明

错误定位在这个 afx.h 文件里面,不在我的程序里面。怎么会这样?谁遇见过,怎么才能消除这个错误?
...全文
106 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gg606 2009-08-09
是不是类对象赋值或者拷贝构造造成的?
因为CObject类的赋值操作符和拷贝构造函数都是声明为私有的,如果其派生类没有重载这二者,可能出现如LZ所说的情况吧。
回复
雪影 2009-08-09
你代码里面时有时有什么类继承了CObject
像这样继承: CXX:private CObject
也可能是你继承了MFC中的类时,是private继承
回复
副组长 2009-08-09
通常我们的项目是不会直接从CObject派生的,但是我们应用的大部分MFC类总根都来自CObject。这个错不好找,好像以前遇到过错误定位到MFC基类的情况,好象是对象当参数传递还是什么来的。
回复
danxuezx 2009-08-09
难道那个变量本来就是私有的?
回复
jiujiu45 2009-08-09
顶一个
回复
雪影 2009-08-09
你搜索private 关键字,类继承时使用的。
将其改为public继承
回复
Q54739616 2009-08-09
果然都是高手,问题就出在用一个类的对象直接当参数传递来的。这不就是拷贝构造吗?

这是原来项目转移到VS2008来的代码,以前是VS2003,怎么就没出错呢?
回复
Q54739616 2009-08-09
从来没有从CObject派生什么,甚至都找不到这个词。
一点一点地去掉,看什么地方编译不通过。
回复
flyoxs 2009-08-09
tttyd 说得不错,你在项目中搜索一下“private CObject”,然后把 private 改为 public 继续
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告