如何将 std::auto_ptr 更改为 boost::shared_ptr?以下是我的限制: 1. 我正在使用 API 类,我们将其称为 only_auto 以返回这些指针 2. 我需要在 auto_only 中使用调用 3. 我的语义涉及共享,因此我确实需要使用 shared_ptr) 4. 在class only_auto operator = 是私有的以防止应对 5. only_auto 对象也必须通过克隆调用创建 std::auto_ptr creat_only_auto();
我知道模板显式 shared_ptr(std::auto_ptr & r); 但是在这种情况下我该如何使用它呢?
一个超级简化的代码示例:
#include <iostream>
#include <memory>
#include <boost/shared_ptr.hpp>
using namespace std;
class only_auto
{
public:
static auto_ptr<only_auto> create_only_auto();
void func1();
void func2();
//and lots more functionality
private:
only_auto& operator = (const only_auto& src);
};
class sharing_is_good : public only_auto
{
static boost::shared_ptr<only_auto> create_only_auto()
{
return boost::shared_ptr (only_auto::create_only_auto()); //not the correct call but ...
}
};
int main ()
{
sharing_is_good x;
x.func1();
}