私は使用してboost::multi_index_container
おり、操作を機能させようとしてmodify
います。私の変更ルーチンは、関数内部クラスを使用して、(大まかに) 次のようになります。
void FooContainer::modifyAttribute(string key, int newValue) {
struct ModifyFunc {
int val;
ModifyFunc(int val): val(val) {}
void operator()(Foo &f) {
foo.val = val;
}
};
StorageContainer::index<keyTag>::type &idx = mContainer.get<keyTag>();
StorageContainer::index<keyTag>::type::iterator iter = idx.find(key);
idx.modify(iter, ModifyFunc(newValue));
}
これをコンパイルしようとすると、次のような複数ページのコンパイラ エラーが発生します (ほとんどは省略されています)。
FooContainer.cpp:##: error: no matching function for call to [...]::modify([...]&, FooContainer::modifyAttribute(string,int)::ModifyFunc)’
この呼び出しの何が問題なのですか? どうすれば機能させることができますか?