I'v phải đối mặt với một số vấn đề, và không thể quyết định giải pháp chính xác là gì.làm thế nào để vượt qua constinity make_shared
Dưới đây là ví dụ mã để minh hoạ:
#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));
}
Vấn đề là tôi không thể tạo ra dụ shared_ptr vì make_shared được và downpasses đối số TestClass constructor là "const A1 &, const A2 & ... "như được ghi lại:
template<typename T, typename Arg1, typename Arg2 >
shared_ptr<T> make_shared(Arg1 const & arg1, Arg2 const & arg2);
Tôi có thể lừa bằng cách tăng :: được chia sẻ (mới ...) hoặc viết lại hàm tạo cho tham chiếu const, nhưng có vẻ không phải như vậy.
Thnx trước!
thể trùng lặp của [tăng làm \ _shared mất trong một tham chiếu const. Bất kỳ cách nào để giải quyết vấn đề này?] (Http://stackoverflow.com/questions/1373896/boost-make-shared-takes-in-a-const-reference-any-way-to-get-around-this) – BenC