函数调用或构造函数调用中的C ++数组初始化

时间:2010-04-20 16:09:53

标签: c++ arrays constructor initialization

此问题与帖子here有关。是否可以在函数调用或构造函数调用中初始化数组?例如,类foo的构造函数需要一个大小为3的数组,所以我想调用foo({0,0,0})。我试过这个,但它不起作用。我希望能够在其他对象的构造函数初始化列表中初始化foo类型的对象,或者在不首先创建单独的数组的情况下初始化foo。这可能吗?

2 个答案:

答案 0 :(得分:5)

不符合现行标准。它可以在C ++ 11

中实现

在gcc中你可以使用强制转换强制创建一个时态,但它不是标准的c ++(C99):

typedef int array[2];
void foo( array ) {}  // Note: the actual signature is: void foo( int * )
int main() {
   foo( (array){ 1, 2 } );
}

答案 1 :(得分:0)

如果您的设计允许,您可以考虑将数据包装在类中,并在默认构造函数中初始化为0(或您选择的任何值)