ここに私が持っているものがあります:
class A
{
A(int i):_i(i){}
private:
int _i;
};
class B
{
B();
private:
std::vector< boost::shared_ptr<A> > _v;
}
そして_v
、2 つboost::shared_ptr<A>
の s で初期化する必要があります。
私はこれを試しました:
B::B():_v(2, boost::make_shared<A>(0)){}
しかし、両方のポインタが唯一の作成されたオブジェクトを指しているようです - 私が必要とするものではありません。
私は持っていないc++11
ので使用できません:
B::B():_v{boost::make_shared<A>(0), boost::make_shared<A>(0)}{}
この状況の最善の解決策は何ですか?