हमारे पास बहुत सारे देशी सी ++ वर्ग हैं जो पूरी तरह से बूस्ट :: क्रमबद्धता का उपयोग करके क्रमबद्ध हैं।प्रबंधित वर्ग के साथ boost :: serialization का उपयोग करना संभव है?
अब हम संपत्ति करने के लिए अपने सदस्य खेतों में से कुछ बदलना चाहते हैं, तो हम उन PropertyGrids में इस्तेमाल कर सकते हैं।
# 1:: error C2893: Failed to specialize function template 'boost::archive::text_oarchive &boost::archive::detail::interface_oarchive<Archive>::operator <<(T &)' d:\someAddress\someFile.cpp 58
# 2: error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const std::_Smanip<_Arg> &)' : could not deduce template argument for 'std::basic_ostream<_Elem,_Traits> &' from 'boost::archive::text_oarchive' d:\someAddress\someFile.cpp 58
हम का एक बहुत है जब हम रेफरी दसवीं कक्षा के लिए कक्षा definiction बदल गया है, हम इन संकलन त्रुटियों की एक बड़ी संख्या मिल गया यहां छोटे वर्ग, इसलिए उनमें से प्रत्येक के लिए एक रैपर लिखना दर्द होगा!
ref class gps_position2
{
public:
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & seconds;
}
public:
gps_position(){};
gps_position(float s)
{
this->seconds = s;
}
property float seconds;
};
यहाँ और मुख्य परीक्षा कोड है::
यहाँ नमूना वर्ग हम प्रयोग किया जाता है
int main()
{
std::ofstream ofs("out.txt");
gps_position2 g(24.567f);
// save data to archive
{
boost::archive::text_oarchive oa(ofs);
// write class instance to archive
oa << g;
}
// ................
return 0;
}
तो यह और भी कामयाब रहे वर्गों के साथ बढ़ावा :: क्रमबद्धता उपयोग करने के लिए संभव है?
संपादित करें:
हम यह करने के लिए वर्ग उपयोग कोड को बदलते हैं: तो
...
gps_position2^ g = gcnew gps_position2(24.567f);
...
हम केवल 1 त्रुटि मिलती है:
error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE<x>' D:\path\to\Boost\boostw\boost\archive\detail\check.hpp 60
क्या समस्या तब भी होती है जब संपत्ति हटा दी जाती है (लेकिन कक्षा एक रेफरी कक्षा बनी हुई है)? – CiscoIPPhone
क्या आप इसके बजाय .NET serialization का उपयोग कर सकते हैं? सी ++ और सी ++ - क्ली एक ही भाषा नहीं हैं। हालांकि वे कुछ हद तक अंतःक्रिया कर सकते हैं, सी ++ के लिए बढ़ावा है, सी ++ नहीं - क्ली। –
@CiscolPPhone: हाँ, यह अभी भी बनी हुई है। @ मेरलीन मॉर्गन-ग्राहम: नहीं, हमें बढ़ावा देना होगा: मुख्य कोड (देशी सी ++ में) में क्रमबद्धता, यह कोड मुख्य कार्यक्रम के लिए केवल एक उपकरण है। – Sayyid