如何从函数/类接收map<A,B>&?

how to receive map<A, B>& from function/class?

本文关键字:lt gt map 函数      更新时间:2023-10-16

该函数如何接收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。为自己的扩展方法。

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

如何正确初始化链接或如何返回不是链接而是真实对象?

如果你需要一个map的引用,你应该声明函数返回一个引用,而不是一个值:

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

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