-1
マップの要素の値を関数の出力パラメータとして使用する場合は、それをスマートポインタまたはローカルとして宣言する方が良いでしょうか?例えば関数の出力パラメータのポインタまたはローカル変数
:
// .h
class A {
private:
// Is the below code preferred over
// std::map<int, std::unique_ptr<B>>?
std::map<int, B> map;
public:
void Func1();
// Message is the output parameter
void Func2(int, B* message);
}
// .cc
void A:: Func1() {
B b;
// Is it better to make b a smart pointer and use std::move
// to transfer the ownership to map?
map.insert(std::make_pair(1, b));
for (const auto& x : map) {
Func2(x->first, &x->second);
}
}
上記の例では、Bのスマートポインタを宣言し、代わりに関数func2へのポインタを渡すために良いですか?
おかげで、
'B'を知らなくても良い方法はありません。 – Phil1970