【问题标题】:Expression list treated as compound expression in initializer表达式列表在初始化程序中被视为复合表达式
【发布时间】:2016-08-29 16:03:06
【问题描述】:

我正在使用以下标头和 cpp 文件,并希望在我的代码中使用此服务器对象,但标题中出现错误。

头文件

class XferServer {
 public:
    XferServer(const std::string& host, uint16_t port);
    ~XferServer(void);

    bool Init(void);
    bool AcceptBagRequest(StreamingBagSender* sender);

 private:
    std::string host_;
    uint16_t port_;

    int server_socket_fd_;
};

cpp 文件

XferServer::XferServer(const std::string& host, uint16_t port)
: host_(host)
, port_(port)
, server_socket_fd_(-1) {
}

XferServer::~XferServer(void) {

}

这就是我在我的程序中所做的,但出现错误

const std::string& host = "host";
uint16_t port = 30000;

include::streaming_xfer::XferServer* server(host,port);

【问题讨论】:

  • 从变量定义中删除星号。
  • 为什么XferServerinclude::streaming_xfer::XferServer* server(host,port);中的指针

标签: c++ initialization


【解决方案1】:

在此声明中声明了一个标量对象指针

include::streaming_xfer::XferServer* server(host,port);
                                  ^^^ 

在标量对象的初始化中,您不能使用包含多个初始化器的 (host,port) 列表。

要么你要声明一个include::streaming_xfer::XferServer 类型的对象,比如

include::streaming_xfer::XferServer server(host,port);

或类似的指针

include::streaming_xfer::XferServer* server = new include::streaming_xfer::XferServer(host,port);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多