我正在存储std::map
std::shared_ptr<V>
作为值。
从一个函数中,我想返回对此映射的引用,但是std::shared_ptr<const V>
作为值类型,是否可能?
这是我想要实现的目标:
#include <map>
#include <memory>
struct A {
std::map<int, std::shared_ptr<int>> map;
const std::map<int, std::shared_ptr<const int>>& ret1() const {
return map;
}
};
但是这段代码无法编译:
error: invalid initialization of reference of type
'const std::map<int, std::shared_ptr<const int> >&'
from expression of type 'const std::map<int, std::shared_ptr<int> >'
由于
答案 0 :(得分:2)
类型T
和类型const T
相关但最终不同类型。如果您不希望ret1
的调用者修改映射中的值,则返回映射的副本,或接受对映射的引用作为参数,并将键和值复制到该映射中。 / p>