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

时间:2016-08-29 16:03:06

标签: c++ initialization

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

1 个答案:

答案 0 :(得分:2)

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

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