2015-07-08 5 views
0

Я хочу иметь массив как член класса, но единственный способ, которым я знаю, как инициализировать массив в конструкторе, - это добавить каждый элемент по отдельности (array [x] = char)Инициализация массива в конструкторе C++

class MyClass 
{ 
    public: 
    MyClass(); 
    ~MyClass(); 
    void PrintLetters(); // Prints each character in the array 
    private: 
    int alpha[3]; // Allocate memory for array 
}; 

MyClass::MyClass() 
{ 
    // Initialize the array 
    alpha[0] = 1; 
    alpha[1] = 2; 
    alpha[2] = 3; 

    PrintLetters(); 
} 

MyClass::~MyClass() 
{ 
} 

void MyClass::PrintLetters() 
{ 
    for (int x = 0; x < 3; x += 1) 
    { 
     cout << alpha[x] << endl; 
    } 
} 

int main() 
{ 
    MyClass abc; 

    return 0; 
} 

Есть ли другой способ сделать это? Если я пытаюсь сделать это следующим образом:

MyClass::MyClass() 
{ 
    // Initialize the array 
    alpha[3] = {1, 2, 3}; 

    PrintLetters(); 
} 

Я получаю следующее сообщение об ошибке: Выражение синтаксиса в Turbo C++

ответ

4

Я верю в НКУ, по крайней мере, с -std=c++11, вы можете сделать это:

MyClass::MyClass() : alpha{1, 2, 3} 
{ 
    PrintLetters(); 
} 

Это просто инициализация массива в списке инициализации членов. Это стандартная функция C++, но некоторые компиляторы (cough VC++ cough), возможно, еще не реализовали ее.

+1

Я подтверждаю, что он по-прежнему не работает с VC2013 ... – BlackDwarf

+1

[web компилятор] (http://webcompiler.cloudapp.net/) компилирует его. Так что да, это было реализовано. – chris

+0

Произведения 'std :: array' в VC120, IIRC. – melak47

Смежные вопросы