尝试将函数参数中的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
答案 0 :(得分:3)
我需要确定您的代码,但看起来您正在尝试按值传递CTypedPointerList。这意味着需要创建实例的副本,因此隐式调用复制构造函数。 CTypedPointerList的作者已将复制构造函数标记为私有,以指示无法复制此类的副本。
尝试通过引用传递(也许是const引用?)。如果您确实需要副本,则可能需要手动执行此操作。
修改强>
啊......你正在使用该实例作为返回值。 GetLog()方法返回实例的副本,由于无法复制实例,因此无法编译。我希望你真正想做的是返回一个对实例的const引用。这意味着客户端将获得对日志的只读引用,不会进行任何复制。要实现此目的,请在h和cpp文件中将GetLog()
的返回类型更改为const CLogData &
。