如何在构造函数中初始化const size数组而不显式声明类声明中的大小?

时间:2017-04-06 11:39:24

标签: c++ c++98

我需要做类似

的事情
class foo {
  foo();
  int a[];
}

进一步在cpp-file中:

foo::foo() : a{1,2,3,4} {}

特殊性:

  1. C ++ 98标准

  2. 数组不是int,初始化列表要长得多。虽然它的值在编译时是已知的,但它们可以不时地改变

  3. 编辑:当new[]用于内存分配时,另一个选项也是合适的,但同样,不希望明确说明数组大小:

    class foo {
      foo();
      int * a;
    }
    

    进一步在cpp-file中:

    foo::foo() {
      a = new[]; // impossible
      // filling the array with values
    }
    

1 个答案:

答案 0 :(得分:2)

你不能这样做:数组的大小是数组的类型的一部分,因此也是类的一部分。构造函数也是类的一部分。该类需要先存在 之前才能调用构造函数,因此构造函数调用不能影响类定义。