c++ - “CObject::CObject”:无法访问类 'CObject' d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxcoll.h 中声明的私有(private)成员

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

尝试将函数参数中的 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/

相关文章:

c++ - 如何在 gcc 上为 x86_64 启用 __fp16 类型

c - 使用 calloc 函数快速初始化 UnsafeMutableRawPointer 中的值

c++ - 在 MFC 扩展 DLL 中使用 BCGControlBar

c++ - 引用的结构不是 'sticking'

c++ - 实时绘图/数据记录

c++ - 带有 SWIG 的 Python C++ 扩展 - 通过导入模块调用函数

增加处理器数量时的核心内存转储

c - 64位除法

c++ - 除非指定了较低的字体质量,否则 ExtTextOut 会因非常长的字符串而失败

c++ - 如何将 cstring 复制到构造函数初始化列表中的成员变量?