0

私はいくつかのブースト コンテナーをいじっていますが、multi_index_container を正しく定義できないように見えるため、最近封鎖されました。オフラインで取得した例に従っていますが、それでもエラーメッセージが表示されます:

struct boost::multi_index::global_fun<const node&, int, <error-constant>>

Error: Expression must have a constant value

私の申告書です:

#define _CRT_SECURE_NO_DEPRECATE
#define _SCL_SECURE_NO_DEPRECATE
#include <boost/config.hpp>

#include <string>
#include <iostream>

#include <boost/multi_index_container.hpp>
#include <boost/multi_index/key_extractors.hpp>
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/global_fun.hpp>
#include <boost/multi_index/ordered_index.hpp>
using namespace boost::multi_index;

struct node
{
    node(std::string da, int in) {
        data = da;
        numerical = in;
    };
    std::string data;
    int numerical;
};

int main()
{
    typedef multi_index_container<
        node,
        indexed_by<
            hashed_unique<
                member<node,std::string, &node::data>>,
            ordered_non_unique<
                global_fun<const node&, int, node::numerical>> //right here, the value numerical errors
            >
        > node_type;



}

このためのファイルを含めていないという予感がありますが、解決策が見つかりません。

4

1 に答える 1

1

これはそれを行う必要があります:

typedef multi_index_container<
  node,
  indexed_by<  hashed_unique< member<node,std::string, &node::data> >
             , ordered_non_unique< member<node, int, &node::numerical> >
            >
  > node_type;

global_funまあ、gloabl関数を期待しています。&node::numericalは のようなメンバーです&node::data。もちろん、ノードを受け取ってそれを抽出する関数を書くことはできますが、なぜそうするのでしょうか?

member.hppインクルードもありません。

于 2013-05-14T14:20:04.687 に答える