【发布时间】:2017-09-01 10:09:07
【问题描述】:
我需要做类似的事情
class foo {
foo();
int a[];
}
在 cpp 文件中的进一步说明:
foo::foo() : a{1,2,3,4} {}
特点:
C++98 标准
array 不是 int,初始化列表要长得多。虽然它的值在编译时是已知的,但它们可能会不时改变
编辑:当new[] 用于内存分配时,另一个选项也是合适的,但是,再次明确说明数组大小是不可取的:
class foo {
foo();
int * a;
}
在 cpp 文件中的进一步说明:
foo::foo() {
a = new[]; // impossible
// filling the array with values
}
【问题讨论】:
-
直到 C++11 才添加初始化列表
-
要么使用以数组大小为参数的类模板,要么只使用std::vector。
-
@Jerfov2 是的,但是可以写
int a[] = {1,2,3,4},这正是我需要的,除了在这种情况下数组应该是静态的或本地的。 -
如果你能做到你所要求的,那么
sizeof(foo)会是什么?