在c ++构造函数中初始化数组

时间:2015-07-08 12:24:07

标签: c++

我希望有一个数组作为类成员,但我知道如何在构造函数中初始化数组的唯一方法是单独添加每个元素(array [x] = char)

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 ++中的表达式语法

1 个答案:

答案 0 :(得分:4)

我至少相信GCC,-std=c++11,你可以这样做:

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

这只是成员初始化列表中的数组初始化。它是一个标准的C ++特性,但是一些编译器( cough VC ++ cough )可能还没有实现它。