gpt4 book ai didi

c++ - Derive from CObject for serialization results a compiler error for access

转载 作者:行者123 更新时间:2023-11-30 04:31:53 25 4
gpt4 key购买 nike

我创建了我的类(class) CData并将其派生自 CObject ,因为我需要对其进行序列化。

class CData : public CObject
{
DECLARE_SERIAL(CData);
public:
CData();
virtual ~CData();
virtual void Serialize(CArchive& ar);

//Data
CString m_strName;
ULONG m_ulID;
CString m_strCorps;
CPoint m_Coordinate;
short m_sStatus;
};

我使用了 vector<CData> 类型的 vector 在我的文档类中。我在程序运行期间使用 vecData.push_back(Data) 将新的 CData 对象添加到 vector 中(其中 Data 是 CData 类型)。

但是当我尝试编译它时,出现以下错误:

error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'

我搜索了一下,发现它与不可复制的 CObject 类有关!?!?...

有谁知道如何解决这个问题?

最佳答案

CObject 将复制构造函数声明为 private,因此您需要自己为您的类实现复制构造函数(和赋值运算符重载)。 CObject constructor documentation说:

The standard C++ default class copy constructor does a member-by-member copy. The presence of the private CObject copy constructor guarantees a compiler error message if the copy constructor of your class is needed but not available. You must therefore provide a copy constructor if your class requires this capability.

希望对您有所帮助!

关于c++ - Derive from CObject for serialization results a compiler error for access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8029635/

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