嗨,我想在类的构造函数中将整个数组初始化为单个元素。我已经尝试了这个解决方案,但是我得到了这个错误。
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 Studio2019,我猜它的C++版本是CPP17。 如果有某种方法,我可以添加一个构造函数,并将整个数组赋值为0,而不需要像这个构造函数那样逐元素形成循环或显式地将整个数组赋值为0
CircularQueue() {
dataItems = { 0 };
}
或者这个
CircularQueue() {
dataItems = 0 ;
}
在这两种情况下,我的错误都是
错误C3863:数组类型“int[10]”不可赋值
如果要用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
}