0
以下是我有:C++:初始化shared_ptr的矢量在構造函數不同的指針
class A
{
A(int i):_i(i){}
private:
int _i;
};
class B
{
B();
private:
std::vector< boost::shared_ptr<A> > _v;
}
我需要有兩個boost::shared_ptr<A>
s到初始化_v
。
我嘗試這樣做:
B::B():_v(2, boost::make_shared<A>(0)){}
但似乎這兩個指針指向唯一創建的對象 - 不是我所需要的。
我沒有c++11
,所以我不能使用:
B::B():_v{boost::make_shared<A>(0), boost::make_shared<A>(0)}{}
,這是什麼情況,最好的解決辦法?
難道你只是'push_back'兩次嗎? – mfontanini
'B :: B():_v(2){_v [0] = boost :: make_shared (0); _v [1] = boost :: make_shared (0); }' – john
您可以使用'boost :: assign :: list_of',例如'S():v(list_of(make_shared(0))(make_shared (1))){}'不幸的是,據報道這是不明確的('v'的ctor;我不知道爲什麼)由醜陋的S():v(vector >()= list_of(make_shared (0))(make_shared (1))){} –
dyp