私は問題に直面していて、正しい解決策が何であるかを決定することができません。
説明のためのコード例は次のとおりです。
#include <boost/make_shared.hpp>
#include <boost/shared_ptr.hpp>
class TestClass{
public:
int a;
TestClass(int& a,int b){};
private:
TestClass();
TestClass(const TestClass& rhs);
};
int main(){
int c=4;
boost::shared_ptr<TestClass> ptr;
//NOTE:two step initialization of shared ptr
// ptr=boost::make_shared<TestClass>(c,c);// <--- Here is the problem
ptr=boost::shared_ptr<TestClass>(new TestClass(c,c));
}
const A1&, const A2&,...
問題は、make_sharedが文書化されているように引数を取得してTestClassコンストラクターに渡すため、shared_ptrインスタンスを作成できないことです。
template<typename T, typename Arg1, typename Arg2 >
shared_ptr<T> make_shared( Arg1 const & arg1, Arg2 const & arg2 );
私はそれをだまして参照boost::shared(new ...)
用のコンストラクターを書き直すことができconst
ますが、それは正しい解決策のようには思えません。
前もって感謝します!