尝试将函数参数中的 CTypedPointerList 实例从一个类发送到另一个类时发生此错误。
如何解决这个问题?
这是我的代码
对象列表.h
#pragma once
#include "LogData.h"
typedef CTypedPtrArray<CPtrList , CLog *> CLogData;
class CObjectList
{
public:
CLogData m_logData;
public:
CObjectList();
CLogData GetLog();
};
对象列表.cpp
#include "stdafx.h"
#include "LogData.h"
CObjectList::CObjectList()
{
}
CLogData CObjectList::GetLog()
{
return m_logData;
}
问候,
卡提克
最佳答案
我需要查看您的代码才能确定,但看起来您正在尝试按值传递 CTypedPointerList。这意味着需要创建实例的拷贝,因此需要隐式调用复制构造函数。 CTypedPointerList 的作者已将复制构造函数标记为私有(private),以指示无法创建此类的拷贝。
尝试通过引用传递(也许是 const 引用?)。如果您确实需要拷贝,则可能需要手动执行此操作。
编辑
啊...您正在使用实例作为返回值。 GetLog() 方法返回实例的拷贝,由于无法复制实例,因此无法编译。我希望您真正想要做的是返回对实例的 const 引用。这意味着客户端将获得对日志的只读引用,不会进行任何复制。为此,在 h 和 cpp 文件中将 GetLog()
的返回类型更改为 const CLogData &
。
关于c++ - “CObject::CObject”:无法访问类 'CObject' d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxcoll.h 中声明的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414741/