表达式列表在初始化器中被视为复合表达式

Expression list treated as compound expression in initializer

本文关键字:表达式 复合 列表 初始化      更新时间:2023-10-16

我正在使用以下头和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);

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

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);