, Смотрите пересмотренный ответ.

ужно создать универсальный класс, содержащий многоиндексный контейнер в качестве хранилища. когда я компилирую, выдает ошибку, как показано ниже, где я определил n-й индекс

ошибка: не шаблон «nth_index» используется в качестве шаблона


/**
 * connection manager
 */<p></p>

<p>template < typename T, typename C >
class conn_mgr: boost::noncopyable {
public:
    /**
     * connection ptr
     */
    typedef boost::shared_ptr conn_ptr_t;<br>
    /**
     * 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;</p>

//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;

private: 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; }

Ответы на вопрос(0)

Ваш ответ на вопрос