std::auto_ptr を boost::shared_ptr に変更するにはどうすればよいですか? ここに私の制限があります: 1. API クラスを使用しています。これらのポインターを返す only_auto と呼びましょう 2. auto_only で呼び出しを使用する必要があります 3. 私のセマンティクスには共有が含まれているため、shared_ptr を使用する必要があります) 4. class only_auto 演算子 = 対処を防ぐために非公開です 5. また、クローン呼び出し std::auto_ptr creat_only_auto(); によって 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();
}