如果您在类中有一个boost :: shared_ptr数据成员:
class X{
public:
private:
boost::shared_ptr<Y> a;
};
如何初始化X的构造函数中的指针?我试过这个并不行:
X::X(){
a(new Y());
}
答案 0 :(得分:2)
您必须使用成员初始化列表:
X::X()
: a(new Y())
// ^^^^^^^^^^^^
{ }
否则a(new Y())
被视为对boost::shared_ptr<Y>::operator()(Y*)
的调用,其中没有定义(或原型),因此您会收到错误。另一种解决方案是使用赋值:
X::X()
{
a = new Y(); // or a = boost::make_shared<Y>()
}