提问者:小点点

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


嗨,我想在类的构造函数中将整个数组初始化为单个元素。我已经尝试了这个解决方案,但是我得到了这个错误。

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]”不可赋值


共1个答案

匿名用户

如果要用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
}

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|中|何在|类|构造|函数|中将|数组|初始|化为|单个|元素)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?