“错误C2248:'CObject :: CObject':无法访问在类'CObject'中声明的私有成员[重复]
Posted
技术标签:
【中文标题】“错误C2248:\'CObject :: CObject\':无法访问在类\'CObject\'中声明的私有成员[重复]【英文标题】:"error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject' [duplicate]“错误C2248:'CObject :: CObject':无法访问在类'CObject'中声明的私有成员[重复] 【发布时间】:2009-05-14 18:46:10 【问题描述】:可能重复:error using CArray
重复:error using CArray
所以,我正在尝试像这样使用 CArray:
CArray<CPerson,CPerson&> allPersons;
int i=0;
for(int i=0;i<10;i++)
allPersons.SetAtGrow(i,CPerson(i));
i++;
但是在编译我的程序时,我得到了这个错误:
"error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject' c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtempl.h"
我什至不明白这是从哪里来的。
帮助!
【问题讨论】:
同作者重复:***.com/questions/864864/error-using-carray 【参考方案1】:问题是您正在堆栈上构造一个 CObject。在程序中的某个地方,您试图传递对 CArray 对象的引用,但您不小心遗漏了函数原型中的“&”。例如:
void DoFoo(CArray cArr)
// Do something to cArr...
^^^ 上面的代码会导致你遇到的错误。
void DoFoo(CArray & cArr)
// Do something to cArr...
^^^ 上面的代码不会导致问题。
【讨论】:
这正是我所做的并且一直在寻找问题,直到我在这里搜索。好电话。 函数原型中甚至不需要缺少 &。我的代码中的问题在变量声明中丢失了。 它对我有用。谢谢。【参考方案2】:为您的类 (CPerson) 编写一个构造函数并将其公开。它应该可以解决问题。
【讨论】:
【参考方案3】:这意味着你的程序正在尝试构造一个CObject
的实例,这似乎被禁止了,因为CObject
有一个私有构造函数。
也许CArray
正在尝试构建这些实例?程序的其余部分是什么样的?
【讨论】:
是的,我认为这与 CArray 试图构造 CObject 的实例有关。但是我该如何规避这个问题呢? 就像我问的那样,程序的其余部分是什么样的?发布最短的完整程序来演示问题,省略任何向导生成的东西等。以上是关于“错误C2248:'CObject :: CObject':无法访问在类'CObject'中声明的私有成员[重复]的主要内容,如果未能解决你的问题,请参考以下文章