0
我正在使用boost::asio
構建一個通信類來封裝客戶端ftp連接。我想在類構造函數上創建套接字並在類生命期中使用它。使用boost :: asio :: ip :: tcp :: socket作爲shared_ptr
由於插座需要io_service
,這裏是從來就迄今所做的:
,我需要保持開放的插座作爲一個類的成員,爲:
class Connect {
boost::asio::io_service ioService;
std::shared_ptr<boost::asio::ip::tcp::socket> currentSocket;
bool isConnected;
}
Connect::Connect()
{
boost::asio::ip::tcp::socket socket(ioService);
socket.connect(--params--);
if (error)
-- handle error --
currentSocket = std::make_shared<boost::asio::ip::tcp::socket>(socket); <<=== ERROR HERE
isConnected = true;
}
Connect::~Connect()
{
currentSocket->disconnect();
}
Connect::Read()
{
currentSocket->async_receive(...);
}
錯誤I'得到的是:
c:\boost_1_60\boost\asio\basic_socket.hpp(1513): error C2248: 'boost::asio::basic_io_object<IoObjectService>::basic_io_object' : cannot access private member declared in class 'boost::asio::basic_io_object<IoObjectService>'
我正在使用VS2012。
這是在類生命期內存儲套接字的正確方法嗎? 爲什麼會發生這種錯誤?
幫助讚賞。
想好的解決方案。運行良好。謝謝!!! – Mendes