Rod*_*ddy 8 c++ boost smart-pointers
我有一个类,其中包含一个指向没有默认构造函数的对象的作用域指针数组.
我发现"初始化"它们的唯一方法就是这样使用swap():
class Bar {
Bar(char * message) {};
}
class Foo
{
boost::scoped_ptr<Bar> arr[2];
Foo()
{
arr[0].swap(boost::scoped_ptr<Bar>( new Bar("ABC") ));
arr[1].swap(boost::scoped_ptr<Bar>( new Bar("DEF") ));
};
}
Run Code Online (Sandbox Code Playgroud)
这感觉有点冗长和笨重.我错过了一种更聪明的方法吗?
Blu*_*eft 15
arr[0].reset(new Bar("ABC"));
arr[1].reset(new Bar("DEF"));
Run Code Online (Sandbox Code Playgroud)
最大的问题是没有办法在这里使用成员初始化列表初始化数组.您可能希望使用专门的指针容器,ptr_vector而不是:
struct Foo {
boost::ptr_vector<Bar> bars;
X() : bars(boost::assign::ptr_list_of<Bar>("ABC")("CDE")) {}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3822 次 |
| 最近记录: |