我需要創建一個包含多索引容器作爲存儲的泛型類。當我編譯時,它會給出錯誤,如下所示,我已經定義了第n個索引視圖。模板參數來提升多索引容器
錯誤:非模板「nth_index」作爲模板
/** * connection manager */
template < typename T, typename C > class conn_mgr: boost::noncopyable { public: /** * connection ptr */ typedef boost::shared_ptr conn_ptr_t;
/** * connection table type * It's a multi index container */ typedef boost::multi_index::multi_index_container < conn_ptr_t, boost::multi_index::indexed_by < //sequenced < >, boost::multi_index::hashed_unique < BOOST_MULTI_INDEX_CONST_MEM_FUN(T, std::string, T::id) >, boost::multi_index::hashed_non_unique < BOOST_MULTI_INDEX_CONST_MEM_FUN(T, std::string, T::type)>, boost::multi_index::hashed_non_unique < boost::multi_index::composite_key < conn_ptr_t, BOOST_MULTI_INDEX_CONST_MEM_FUN(T, std::string, T::id), BOOST_MULTI_INDEX_CONST_MEM_FUN(T, std::string, T::type) > > > > conn_table_t;//typedef for ConnectionIdView typedef conn_table_t::nth_index<0>::type conn_table_by_id_type; typedef conn_table_t::nth_index<1>::type conn_table_by_type; typedef conn_table_t::nth_index<2>::type conn_table_by_id_type;
私人: conn_table_t conn_table_; };
and here how I am using in main.
int main(int argc, char** argv) { typedef conn_mgr < smpp_conn, smpp_config > smpp_conn_mgr_t; smpp_conn_mgr_t conn_mgr; }
您無法鍵入一個模板。此行無效:'typedef boost :: shared_ptr conn_ptr_t;' – 2011-03-10 05:34:40