2017-07-15 43 views
-2

只是编译测试,初始化列表中不被接受:如何在对象的构造函数初始化数组变量

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}; 
     ^

如何数组初始化?

+1

它不能被初始化。一个'int array [];'类成员是无效的C++。这是一个仅限gcc的扩展。 C++不能以这种方式工作。 –

+1

考虑使用'std :: vector'或'std :: array',因为正如之前的评论指出的那样,你不能通过使用普通的'int array []' – Fureeish

回答

0

您必须提供数组的大小。语法是:Type variable_name[constexpr]

例如:

class Test { 
public: 
    Test() : array{1, 2, 3} { 
    } 

private: 
    int array[3]; 
}; 

如果你想有一个动态分配的数组,你必须使用newdelete。更好的选择是:std::vector

相关问题