表达式列表在初始化程序中被视为复合表达式
Posted
技术标签:
【中文标题】表达式列表在初始化程序中被视为复合表达式【英文标题】: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);
【问题讨论】:
从变量定义中删除星号。 为什么XferServer
是include::streaming_xfer::XferServer* server(host,port);
中的指针
【参考方案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);
【讨论】:
以上是关于表达式列表在初始化程序中被视为复合表达式的主要内容,如果未能解决你的问题,请参考以下文章