简体   繁体   English

如何在 c++ 的 class 构造函数中将整个数组初始化为单个元素

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

Hi I am looking to initalize whole array to single element in constructor of class.I have tried this solution but I am getting this errror.嗨,我希望在 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.

My code is我的代码是

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

};

I have Visual Studio 2019, I guess c++ version in it is cpp17.我有 Visual Studio 2019,我猜它的 c++ 版本是 cpp17。 If there is someway I can add a constructor and assign whole array to 0 without for loop or explicitly element by element, like this constructor如果有某种方式我可以添加一个构造函数并将整个数组分配给 0 而无需 for 循环或显式逐个元素,就像这个构造函数


CircularQueue() {
        dataItems = { 0 };
    }

or this one或者这个

CircularQueue() {
        dataItems =  0 ;
    }

In both case my error is在这两种情况下,我的错误都是

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

If you want to initialize all values with 0如果你想用0初始化所有值

CircularQueue() : dataItems{} {}

Or,或者,

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

If the array is too long, you can do this.如果数组太长,可以这样做。 It is not initializing .它没有初始化 It's assigning after initialization.它是在初始化后分配的。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM