2

std::mapofを値として保存しstd::shared_ptr<V>ています。

1つの関数から、このマップへの参照を返したいのですが、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> >'

ありがとう

4

1 に答える 1

2

タイプTとタイプconst Tは関連していますが、最終的には異なるタイプです。の呼び出し元にマップの値を変更させたくない場合はret1、マップのコピーを返すか、引数としてマップへの参照を受け入れて、キーと値をそこにコピーします。

于 2012-12-14T08:27:21.147 に答える