He enfrentado algunos problemas y no puedo decidir cuál es la solución correcta.cómo superar make_shared constness
Aquí está el ejemplo de código para la ilustración:
#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));
}
El problema es que no puedo crear shared_ptr ejemplo a causa de make_shared obtiene y downpasses argumentos a TestClass constructor como "const A1 &, const A2 &, ... "tal como se documenta:
template<typename T, typename Arg1, typename Arg2 >
shared_ptr<T> make_shared(Arg1 const & arg1, Arg2 const & arg2);
puedo engañar con el impulso :: compartida (nueva ...) o reescribir constructor de referencias const, pero parece que no es la manera que debe ser.
Thnx por adelantado!
posible duplicado de [impulso maquillaje \ _shared toma en una referencia constante. ¿Alguna forma de evitar esto?] (Http://stackoverflow.com/questions/1373896/boost-make-shared-takes-in-a-const-reference-any-way-to-get-around-this) – BenC