다음부스트는 shared_ptr을 함께 noncopyable 오류를 바인딩 :: 내가 노력하고 <tcp::socket>
boost::shared_ptr<tcp::socket> socket(new tcp::socket(*io_service));
boost::bind(&function, *socket); // compiler error: noncopyable error
function(*socket); // this works fine
void
function(tcp::socket & socket)
{
//do work
}
을 내가 부스트 : : 바인딩을 사용하여이 오류가 발생하는 이유는 무엇입니까?
는 나중에 다음과 같은 시도 :
boost::shared_ptr<tcp::socket> socket(new tcp::socket(*io_service));
boost::bind(&function, socket); //this works fine now
void function(boost::shared_ptr<tcp::socket> socket)
{
asio::read_until(&socket, buffer, "end"); // compiler error: says i am passing an invalid argument
}
않는 이유는 지금은없는이 작품?
저는 C/C++ 프로그래밍의 기본 지식이 부족하다는 것을 알고 있습니다.
누구나 이와 같은 문제에 도움이되는 링크를 포함 할 수 있다면 좋을 것입니다.
두 번째 방법의 문제점은 포인터이기 때문에 소켓을 읽을 수 없다는 것입니다. 나는 & socket_ptr을 사용하여 포인터 대신 소켓을 줄 것이라고 생각했다. 그것에 대해 어떻게 알아? – Takashi
get()을 사용하여 포인터를 가져옵니다. 하지만 그것은 당신이 전달하고자하는 것이 아니며 소켓에 대한 참조를 전달하고자합니다. 내 편집 된 답변보기 – ronag