c++ - 错误 C2248 无法访问类 'boost::asio::basic_io_object<IoObjectService> 中声明的私有(private)成员

标签 c++ sockets boost boost-asio

我有一个以 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/

相关文章:

c++ - 为下一个 C++ 标准做准备

c++ - nothrow 在 C++11 中构造虚类

c++ - 源码中的防火墙绕过技术

c++ - 在哪里放置模板特化

linux - TCP 发送队列卡住

C编程-> wpa_supplicant连接-> udp广播发送到 "Network Unreachable"

java - 安卓 JNI : Java calling a C++ class object via JNI

.net - 是否可以将网络异常用于控制流?

c++ - io_service::run() async_* 函数的处理顺序

c++ - C++ Boost中有回收池结构吗?