如何在对象的构造函数初始化数组变量
问题描述:
只是编译测试,初始化列表中不被接受:如何在对象的构造函数初始化数组变量
class Test {
public:
Test() {
array[] = {1,2,3,4,5};
}
private:
int array[];
};
$ g++ -Wall -std=c++11 Test.h Test.h: In constructor ‘Test::Test()’: Test.h:7:10: error: expected primary-expression before ‘]’ token array[] = {1,2,3,4,5}; ^
如何数组初始化?
答
您必须提供数组的大小。语法是:Type variable_name[constexpr]
。
例如:
class Test {
public:
Test() : array{1, 2, 3} {
}
private:
int array[3];
};
如果你想有一个动态分配的数组,你必须使用new
和delete
。更好的选择是:std::vector
它不能被初始化。一个'int array [];'类成员是无效的C++。这是一个仅限gcc的扩展。 C++不能以这种方式工作。 –
考虑使用'std :: vector'或'std :: array',因为正如之前的评论指出的那样,你不能通过使用普通的'int array []' – Fureeish