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

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

【问题讨论】:

从变量定义中删除星号。 为什么XferServerinclude::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);

【讨论】:

以上是关于表达式列表在初始化程序中被视为复合表达式的主要内容,如果未能解决你的问题,请参考以下文章

递归调用中的错误“[Error] 表达式列表被视为初始化程序 [-fpermissive] 中的复合表达式”

表达式列表被视为复合表达式

C----框架变量常量赋值复合赋值初始化表达式运算符

C 逗号运算符

C程序设计导引

4复合类型