我有一个以 boost socket 作为成员的简单类,我试图将 IP 地址传递给它的构造函数,这给了我编译错误。
Error 2 error C2248: 'boost::asio::basic_io_object<IoObjectService>::basic_io_object' : cannot access private member declared in class 'boost::asio::basic_io_object<IoObjectService>'
但是,如果我从它的构造函数中删除 std::string ip 参数,它就可以正常工作。 知道为什么它没有编译
class TestConnection
{
private:
boost::asio::ip::tcp::socket tcp_socket_;
public:
TestConnection(boost::asio::io_service &io, std::string ip):tcp_socket_(io)
{
}
~TestConnection()
{
}
};
int main()
{
boost::asio::io_service io_service;
std::string test_ip = "192.168.1.10";
TestConnection testconn = TestConnection(io_service, test_ip);
}
最佳答案
TestConnection testconn = TestConnection(io_service, test_ip);
在上面的行中,您实际上尝试调用 TestConnection
复制构造函数,这是不可用的,因为 tcp_socket_
成员是不可复制的。相反,您可以按如下方式编写该行:
TestConnection testconn(io_service, test_ip);
关于c++ - 错误 C2248 无法访问类 'boost::asio::basic_io_object<IoObjectService> 中声明的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24624488/