簡體   English   中英

C ++-成員變量聚合初始化

[英]C++ - member variable aggregate initialization

在下面的代碼中:

class Class
{
private:
LUID luid;

public:
Class()
{
luid = { 0, 0}; // A. Does not compile
LUID test = {0, 0}; // B. Compiles
test = {1,1}; // C. Does not compile
}

為什么A和C不正確,但是B可以呢?

我得到的A和C錯誤是:

錯誤C2059:語法錯誤:“ {”

錯誤C2143:語法錯誤:缺少';' 在“ {”之前

錯誤C2143:語法錯誤:缺少';' 在“}”之前

我認為這與C ++版本有關,盡管除了不太新以外,我不確定它使用的是哪個版本。

語句LUID test = {0, 0}是使用初始化列表的局部變量的初始化 ; 這是有效的,因為它在變量定義過程中使用。 相反, test = {0, 0}是一個賦值 ,因為test在其他地方定義。 僅在特定情況下(例如,在分配給標量或特定種類的類類型時(例如,參見braced-init-list分配 )),才支持分配初始化器列表

其他情況(例如數組)不能分配,而只能初始化:

typedef int LUID[2];

int main(){

    LUID t = { 10, 20 }; // compiles
    // t = { 10, 20};     // does not compile, since an array is not assignable

     return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM