2016-06-20 28 views
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); 
}; 

回答