传递 CList 变量时会出现错误 C2248:"CObject::CObject":无法访问私有成员



在我的类中,我有一个静态Clist variable,按以下方式声明:

#include<stdio.h>
#include<conio.h>
#include <afxtempl.h>
void otherfunc(CList<int,int> a)
{
}
class A
{
public:
CList<int,int> myvariable;
void myfunc()
{
otherfunc(myvariable);
}
};

int _tmain(int argc, _TCHAR* argv[])
{
    A a;
    a.myfunc();
    getch();
    return 0;
}

otherfunc()不是我班的一部分。

我哪里出错了?我刚刚粘贴了带有问题的代码片段。我已经启动了它,除了我调用 otherfunc() 的行之外,所有工作文件都有效。它不依赖于静态关键字。即使我删除静态,我也会收到相同的错误。

编辑:这是我得到的错误:

C:program files (x86)microsoft visual studio 9.0vcatlmfcincludeafxtempl.h(776) : error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
1>        c:program files (x86)microsoft visual studio 9.0vcatlmfcincludeafx.h(561) : see declaration of 'CObject::CObject'
1>        c:program files (x86)microsoft visual studio 9.0vcatlmfcincludeafx.h(532) : see declaration of 'CObject'
1>        This diagnostic occurred in the compiler generated function 'CList<TYPE,ARG_TYPE>::CList(const CList<TYPE,ARG_TYPE> &)'
1>        with
1>        [
1>            TYPE=int,
1>            ARG_TYPE=int
1>        ]

你的代码无法编译(Class应该是classPublic应该是public等)。错误消息是什么?此外,您还必须发布一个简单的可编译示例来重现您的错误。我的猜测是你没有在其类声明之外实例化静态变量,请参阅

http://www.learncpp.com/cpp-tutorial/811-static-member-variables/

由于"公共:",您可能不会收到错误。因为"公共:"不是一个关键词,而是一个标签。这就是为什么"myvariable"默认是私有的。代替"公共:",使用"公共:",并将"静态"替换为静态。

看看 - 的定义

void otherfunc(CList<int,int> a)

输入参数CList<int,int> a按值传递,这意味着当您调用此函数时,它将使用 CList<int,int> Copy Constructor 复制输入参数。
但是CList<int,int>不实现复制构造函数,其基类CObject将其复制构造函数定义为私有。

您应该将定义更改为 -

void otherfunc(CList<int,int>& a)

相关内容

  • 没有找到相关文章

最新更新