Mam do czynienia z pewnym problemem i nie mogę zdecydować, co jest poprawnym rozwiązaniem.jak pokonać make_shared constness
Oto przykładowy kod dla ilustracji:
#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));
}
Problemem jest to, nie mogę tworzyć shared_ptr instancji z powodu make_shared dostaje i downpasses argumenty konstruktora TestClass jako „A1 & const const A2 & ... "udokumentowane:
template<typename T, typename Arg1, typename Arg2 >
shared_ptr<T> make_shared(Arg1 const & arg1, Arg2 const & arg2);
mogę oszukać z boost :: dzielone (nowa ...) lub przepisać konstruktor odniesienia const, ale wydaje się, że nie jest tak jak powinno być.
Thnx z góry!
możliwe duplikat [doładowania make \ _shared zajmuje w const odniesienia. Jakikolwiek sposób obejścia tego?] (Http://stackoverflow.com/questions/1373896/boost-make-shared-takes-in-a-const-reference-any-way-to-get-around-this) – BenC