'CObject :: CObject':无法访问类'CObject'd:\ program files \ microsoft visual studio 9.0 \ vc \ atlmfc \ include \ afxcoll.h中声明的私有成员

时间:2011-03-24 04:26:02

标签: c++ c mfc visual-c++

尝试将函数参数中的CTypedPointerList实例从一个类发送到另一个类时发生此错误。

如何解决这个问题?

这是我的代码

ObjectList.h

#pragma once
#include "LogData.h"
typedef  CTypedPtrArray<CPtrList , CLog *> CLogData;
class CObjectList
{
    public:

CLogData m_logData;
    public:
CObjectList();
CLogData GetLog();
};

ObjectList.cpp

#include "stdafx.h"
#include "LogData.h"

CObjectList::CObjectList()
{
}

CLogData CObjectList::GetLog()
{
return m_logData;
}

此致

KARTHIK

1 个答案:

答案 0 :(得分:3)

我需要确定您的代码,但看起来您正在尝试按值传递CTypedPointerList。这意味着需要创建实例的副本,因此隐式调用复制构造函数。 CTypedPointerList的作者已将复制构造函数标记为私有,以指示无法复制此类的副本。

尝试通过引用传递(也许是const引用?)。如果您确实需要副本,则可能需要手动执行此操作。

修改

啊......你正在使用该实例作为返回值。 GetLog()方法返回实例的副本,由于无法复制实例,因此无法编译。我希望你真正想做的是返回一个对实例的const引用。这意味着客户端将获得对日志的只读引用,不会进行任何复制。要实现此目的,请在h和cpp文件中将GetLog()的返回类型更改为const CLogData &