如何接收地图<a,b =“”>&amp;从功能/类?</a,>

时间:2011-04-19 22:58:57

标签: c++ function boost map boost-extension

如何从这样的功能中接收map<string, factory<BaseClass, ConstructorType> >

所以我有

template <class BaseClass, class ConstructorType>
map<string, factory<BaseClass, ConstructorType> > get_factories (shared_library & lib) {
    type_map lib_types;
    if (!lib.call(lib_types)) {
        cerr << "Types map not found!" << endl;

    }

    map<string, factory<BaseClass, ConstructorType> >& lib_factories(lib_types.get());
    if (lib_factories.empty()) {
        cerr << "Producers not found!" << endl;

    }
    return lib_factories;

}

我尝试通过以下方式获得其价值:

map<string, factory<PublicProducerPrototype, int> > producer_factories();
producer_factories = get_factories<PublicProducerPrototype, int>(simple_producer);

我尝试为自己概括/简化一些boost.extension方法。

那么如何正确接收map<A, B>&

如何正确初始化链接或如何返回非链接而是真实对象? (对不起C ++ nube)

1 个答案:

答案 0 :(得分:1)

如果需要对地图的引用,则应将该函数声明为返回引用,而不是值:

template <class BaseClass, class ConstructorType>
map<string, factory<BaseClass, ConstructorType> >& get_factories (...

当然,这假定lib_types.get()返回的引用可以安全地作为参考传递。