gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:39:43 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com