簡體   English   中英

如何在 c++ 的 class 構造函數中將整個數組初始化為單個元素

[英]How to initialize whole array to single element in class constructor in c++

嗨,我希望在 class 的構造函數中將整個數組初始化為單個元素。我已經嘗試過這個解決方案,但我遇到了這個錯誤。

1>C:\Users\Ahmad Mustafa Anis\source\repos\ciruclar queue\Source.cpp(8,8): error C2590: 'sig': only a constructor can have a base/member initializer list
1>Done building project "ciruclar queue.vcxproj" -- FAILED.

我的代碼是

class CircularQueue {
public:
    int dataItems[10];
    sig() : dataItems{0, 0, 0, 0, 0, 0, 0, 0, 0, 0} { }

};

我有 Visual Studio 2019,我猜它的 c++ 版本是 cpp17。 如果有某種方式我可以添加一個構造函數並將整個數組分配給 0 而無需 for 循環或顯式逐個元素,就像這個構造函數


CircularQueue() {
        dataItems = { 0 };
    }

或者這個

CircularQueue() {
        dataItems =  0 ;
    }

在這兩種情況下,我的錯誤都是

error C3863: array type 'int [10]' is not assignable

如果你想用0初始化所有值

CircularQueue() : dataItems{} {}

或者,

CircularQueue() : dataItems{0,0,0,0,0,0,0,0,0,0} {}

如果數組太長,可以這樣做。 它沒有初始化 它是在初始化后分配的。

CircularQueue() {
    std::fill(dataItems, dataItems+10, 3); //3 for example
}

暫無
暫無

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

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