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

发布于 2024-10-26 04:26:12 字数 538 浏览 4 评论 0原文

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

This error happens while trying to send the instance of CTypedPointerList in the function parameter from one class to another class.

How to solve this issue?

Here is my code

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;
}

Regards,

karthik

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌上青苔 2024-11-02 04:26:12

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

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

编辑

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

I'd need to see your code to be sure, but it looks like you're trying to pass the CTypedPointerList by value. This means a copy of the instance needs to be created, thus the implicit call to the copy constructor. The authors of CTypedPointerList have marked the copy constructor private in order to indicate that copies of this class cannot be made.

Try passing by reference (perhaps a const reference?). If you truly do need a copy, you may need to do this manually.

EDIT

Ahh... you're using the instance as a return value. The GetLog() method returns a copy of the instance, and since the instance cannot be copied, it does not compile. I expect what you really want to do is return a const reference to the instance. This means client will get a read-only reference to the log, no copy is made. To achieve this, change the return type of GetLog() to const CLogData & in both the h and cpp files.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文