0
如果你有一個boost :: shared_ptr的數據成員中的一類:boost :: shared_ptr作爲數據成員,如何在構造函數中賦值?
class X{
public:
private:
boost::shared_ptr<Y> a;
};
你如何初始化在X的構造函數指針?我嘗試這樣做,它不會工作:
X::X(){
a(new Y());
}
如果你有一個boost :: shared_ptr的數據成員中的一類:boost :: shared_ptr作爲數據成員,如何在構造函數中賦值?
class X{
public:
private:
boost::shared_ptr<Y> a;
};
你如何初始化在X的構造函數指針?我嘗試這樣做,它不會工作:
X::X(){
a(new Y());
}
你必須使用成員初始化列表:
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>()
}
「不行」怎麼辦?在我看來很好 – codeling