2017-07-15 77 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

相關問題