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