1
我有兩個類BaseTolerance和ImageProcessingTask。我得到錯誤消息:'錯誤C2228:'.serialize'的左邊必須有class/struct/union'。帶序列化的XML序列化('.serialize'的左邊必須有class/struct/union)
如果(在ImageProcessingTask)行
ar & make_nvp("ToleranceToMeasure", tolerance_to_measure_);
被註釋的那樣,錯誤信息消失。
#include <boost/archive/xml_oarchive.hpp>
class BaseTolerance
{
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
using boost::serialization::make_nvp;
ar & make_nvp("ToleranceName", tolerance_name_);
}
char* tolerance_name_;
public:
BaseTolerance();
~BaseTolerance();
char* GetToleranceName();
void SetToleranceName(char* name);
};
和
#include "GeometricTolerance.h"
class ImageProcessingTask
{
BaseTolerance *tolerance_to_measure_;
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
using boost::serialization::make_nvp;
ar & make_nvp("ToleranceToMeasure", tolerance_to_measure_);
}
public:
ImageProcessingTask();
~ImageProcessingTask();
BaseTolerance *GetToleranceToMeasure();
void SetToleranceToMeasure(BaseTolerance *tolerance);
};