“错误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'中声明的私有成员[重复]的主要内容,如果未能解决你的问题,请参考以下文章