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