用于序列化的来自CObject的派生将导致访问时出现编译器错误
Derive from CObject for serialization results in a compiler error for access
我创建了我的类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>
类型的向量。我使用vecData.push_back(Data)
在程序运行期间添加新的CData-对象到向量(其中数据是CData类型)。
但是当我试图编译这个我得到以下错误:
错误C2248: 'CObject::CObject':无法访问私有成员在类'CObject'中声明
我搜索了一下,发现它与cobject类是不可复制的或类似的东西有关!? ? ? ?…
有谁知道如何解决这个问题吗?CObject
声明复制构造函数为private
,因此您需要自己为类实现复制构造函数(和赋值操作符重载)。CObject
构造函数文档说:
标准c++默认类复制构造函数执行逐个成员的复制。如果需要类的复制构造函数但不可用,则私有CObject复制构造函数的存在保证会出现编译器错误消息。因此,如果您的类需要此功能,则必须提供复制构造函数。
我希望这对你有帮助!
您是否碰巧忘记了.cpp-文件中的IMPLEMENT_SERIAL
?
相关文章:
- 编译器(Visual C++)如何优化按索引访问矢量元素?
- 处于默认参数位置的 Lambda 无法访问好友成员。这是编译器错误吗?
- 如果使用低于 VS2015 的 vc++ 编译器版本编译,则 DLL 中的访问冲突
- 现代C++编译器是否优化了对类中同一数据成员的重复访问?
- C STD ::排序Intel编译器错误:访问违规
- SSTREAM通过公共访问编译器错误重新编辑
- Visual C 编译器生成无法访问的.pyd文件
- 编译器(GCC)如何处理C 的访问控件
- 为什么在实例化模板类时编译器无法访问.cpp
- 微优化-访问递归成员时的编译器优化
- 在多继承编译器的情况下访问成员变量是否依赖?如何正确地做
- 编译器何时需要访问库
- std::unique_ptr 编译器错误:派生类的成员无法访问基类的私有成员
- 错误 C2248:无法访问在类中声明的私有成员,编译器行为异常
- 为什么编译器允许越界数组访问,即使使用 constexpr 索引也是如此
- 通过指针访问类的成员时"unqualified-id"编译器错误
- 用于顺序内存访问的编译器嵌套循环优化
- linux服务器上的C++11兼容编译器,无需root访问权限
- C++编译器XE5:初始化GDI+时发生访问冲突
- as-if规则是否防止编译器对全局/成员变量的访问重新排序