Re: [Cppcms-users] Compile error: traits is not a template
Brought to you by:
artyom-beilis
From: 陈抒 <csf...@gm...> - 2012-09-01 07:06:05
|
Thank you. But I see new error. groups.h file: #ifndef __GROUPS_H #define __GROUPS_H #include <vector> #include <boost/shared_ptr.hpp> #include "group.h" namespace kaimei{ class groups{ public: typedef std::vector<boost::shared_ptr<group> >::iterator iterator; typedef std::vector<boost::shared_ptr<group> >::const_iterator const_iterator; void add(boost::shared_ptr<group> g); bool empty() const; unsigned int size() const; std::string json_string() const; friend class cppcms::json::traits<kaimei::groups>; private: std::vector<boost::shared_ptr<kaimei::group> > values_; }; } namespace cppcms { namespace json { template<> struct traits<kaimei::groups> { static void set(value &v, kaimei::groups const& in) { v.set("size", in.size()); v.set("values", in.values_); } }; } } #endif error message: 3%] Generating ../../src/view/welcome.cpp, ../../src/view/home.cpp, ../../src/view/gprs_message.cpp, ../../src/view/gprs_manager.cpp, ../../src/view/gprs_password.cpp, ../../src/view/gprs_log.cpp, ../../src/view/register_client.cpp, ../../src/view/gprsConfig.cpp, ../../src/view/login.cpp, ../../src/view/group_management.cpp [ 6%] Building CXX object bin/CMakeFiles/cppweb.dir/groups.cpp.o In file included from /home/chenshu/work/kaimei/cppweb/include/group.h:5:0, from /home/chenshu/work/kaimei/cppweb/include/groups.h:6, from /home/chenshu/work/kaimei/cppweb/src/groups.cpp:1: /usr/include/cppcms/json.h: In member function ‘void cppcms::json::value::set_value(const T&) [with T = boost::shared_ptr<kaimei::group>]’: /usr/include/cppcms/json.h:604:5: instantiated from ‘static void cppcms::json::traits<std::vector<T> >::set(cppcms::json::value&, const std::vector<T>&) [with T = boost::shared_ptr<kaimei::group>]’ /usr/include/cppcms/json.h:247:4: instantiated from ‘void cppcms::json::value::set_value(const T&) [with T = std::vector<boost::shared_ptr<kaimei::group> >]’ /usr/include/cppcms/json.h:316:4: instantiated from ‘cppcms::json::value::value(const T&) [with T = std::vector<boost::shared_ptr<kaimei::group> >]’ /usr/include/cppcms/json.h:352:4: instantiated from ‘void cppcms::json::value::set(const char*, const T&) [with T = std::vector<boost::shared_ptr<kaimei::group> >]’ /home/chenshu/work/kaimei/cppweb/include/groups.h:39:28: instantiated from here /usr/include/cppcms/json.h:247:4: error: incomplete type ‘cppcms::json::traits<boost::shared_ptr<kaimei::group> >’ used in nested name specifier make[2]: *** [bin/CMakeFiles/cppweb.dir/groups.cpp.o] Error 1 make[1]: *** [bin/CMakeFiles/cppweb.dir/all] Error 2 make: *** [all] Error 2 陈抒 Best regards http://blog.csdn.net/sheismylife On Sat, Sep 1, 2012 at 2:34 PM, Artyom Beilis <art...@ya...> wrote: > > > > >But I got error when compiling another class. It has group.h and > group.cpp file. > > > > > >#ifndef __GROUP_H > >#define __GROUP_H > > > > > >#include <string> > > > > > >namespace kaimei{ > >... > } > > > > > >namespace cppcms { > > namespace json { > > template<> > > struct traits<kaimei::group> { > >... > > } > > } > >} > > > > > > > > [snip] > > > >I am not good at template programming. Why did this happen? > > > > You can't specialize undefined struct - you need to include <cppcms/json.h> > header. It provides the original traits struct and than you specialize it > for > your type of class > > > > > >陈抒 > >Best regards > >http://blog.csdn.net/sheismylife > > > > Regards, > Artyom > > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |