2008-09-17 22 views
8

निर्दिष्ट करना मेरे पास एक टेम्पलेट क्लास है जिसे मैं क्रमबद्ध करता हूं (इसे सी कहते हैं), जिसके लिए मैं बूस्ट क्रमबद्धता के लिए एक संस्करण निर्दिष्ट करना चाहता हूं। चूंकि BOOST_CLASS_VERSION टेम्पलेट कक्षाओं के लिए काम नहीं करता है। मैंने यह कोशिश की:बूस्ट सीरियलाइजेशन: टेम्पलेट क्लास संस्करण

namespace boost { 
namespace serialization { 
    template< typename T, typename U > 
    struct version< C<T,U> > 
    { 
     typedef mpl::int_<1> type; 
     typedef mpl::integral_c_tag tag; 
     BOOST_STATIC_CONSTANT(unsigned int, value = version::type::value); 
    }; 
} 
} 

लेकिन यह संकलित नहीं करता है।

error C2913: explicit specialization; 'boost::serialization::version' is not a specialization of a class template

यह करने के लिए सही तरीका क्या है: VC8 के तहत, BOOST_CLASS_VERSION को बाद में एक कॉल इस त्रुटि देता है?

+0

"लेकिन यह संकलित नहीं करता है"। क्या आप हमें उससे कुछ जानकारी दे सकते हैं ?? –

+0

वीसी 8 के तहत: त्रुटि C2913: स्पष्ट विशेषज्ञता; 'बूस्ट :: serialization :: संस्करण' BOOST_CLASS_VERSION के बाद के कॉल पर क्लास टेम्पलेट का एक विशेषज्ञ नहीं है। – Jazz

+1

यह सही दिखता है। त्रुटि संदेश यह सुझाव देता है कि आपने संस्करण.hpp –

उत्तर

11
#include <boost/serialization/version.hpp> 

:-)

+12

यह त्रुटि तब भी हो सकती है जब BOOST_CLASS_VERSION मैक्रो नामस्थान के अंदर है, इसे वैश्विक होना आवश्यक है। –

1

मैं तरीके से मैक्रो BOOST_CLASS_VERSION उपयोग करने के लिए जब तक मैं इसे एक नाम स्थान के अंदर समझाया में सक्षम था। संकलन त्रुटि लौटे थे:

error C2988: unrecognizable template declaration/definition 
error C2143: syntax error: missing ';' before '<' 
error C2913: explicit specialization; 'Romer::RDS::Settings::boost::serialization::version' is not a specialization of a class template 
error C2059: syntax error: '<' 
error C2143: syntax error: missing ';' before '{' 
error C2447: '{': missing function header (old-style formal list?) 

एक पिछले संपादन में सुझाव दिया, वैश्विक क्षेत्र को BOOST_CLASS_VERSION चलती के रूप में समस्या हल हो जाती। मैं संदर्भित संरचना के करीब मैक्रो को रखना पसंद करूंगा।

संबंधित मुद्दे