此问题与职位here有关。是否有可能在函数调用或构造函数调用中初始化数组?例如,foo类的构造函数需要一个大小为3的数组,所以我想调用foo({0,0,0})。我试过这个,但它不起作用。我希望能够在其他对象的构造函数初始化列表中初始化foo类型的对象,或者在不首先创建单独的数组的情况下初始化foo。这可能吗?函数调用或构造函数调用中的C++数组初始化
回答
不符合当前标准。它会在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 } );
}
这适用于C99,但不适用于C++ 03(在C++ 0x中都没有 - 这是一个复合文字)。 – 2010-04-20 16:45:48
代码是可以的(macports)gcc最高4.6;海湾合作委员会4.7报告错误:采取临时阵列的地址。 – 2012-08-20 10:24:01
C++ 11是当前的标准,所以这个答案需要更新。 – 2013-08-31 15:57:08
如果您的设计允许,你可以考虑将数据包装到一个类中,并在默认的构造函数中初始化为0(或者你选择的任何值)。
- 1. 调用构造函数并初始化
- 2. 使用函数构造函数初始化调用
- 3. 只有一个构造函数调用的数组初始化
- 4. 调用函数初始化
- 5. 如何调用初始化数组长度的数组构造函数?
- 6. 构造函数在初始化调用构造函数的列表中调用子代码
- 7. 在构造函数中调用未初始化的变量
- 8. 在初始化中调用正确值的构造函数吗?
- 9. 从C#中的参数化构造函数调用无参数构造函数?
- 10. C#调用构造函数
- 11. 初始化C++构造函数的初始化列表中的char数组
- 12. 初始化结构数组在类的构造函数C++
- 13. php中的函数调用构造函数并初始化对象
- 14. 初始化构造函数C++
- 15. C++模板构造函数初始化
- 16. c#构造函数与初始化
- 17. 在构造函数中初始化数组或向量
- 18. 从参数化构造函数调用默认构造函数
- 19. 用super构造函数初始化()
- 20. 将数据库初始化调用放入C#构造函数中可以吗?
- 21. 如何(重新)调用初始化对象的构造函数?
- 22. 由于静态初始化而被调用的构造函数
- 23. C++在构造函数中初始化函数指针
- 24. C#“构造函数”与Obj-C“初始化函数”相同吗?
- 25. 复制构造函数不被调用用于复制初始化或优化?
- 26. 构造函数中的初始化块
- 27. Cpp。哪个被首先调用/初始化?类构造函数或其成员类的构造函数?
- 28. C++:数组的构造函数初始化列表?
- 29. 带数组的C++构造函数初始化列表
- 30. 调用拷贝构造函数与统一初始化
首先你谈论数组初始化,然后你突然需要初始化一个类对象。那么你需要初始化什么:数组对象或类对象? – AnT 2010-04-20 16:15:07
初始化一个类是一个特例,我作为一个例子,是我问这个问题的原因。但是,您也可以使用一个函数foo,该函数使用大小为3的数组并且想将其称为:foo({0,0,0})。我已经改变了OP,使其更明显。 – david 2010-04-20 16:21:59
是的,但您仍然在问:“是否可以在不分配数组的情况下初始化数组?”。嗯,是的,这是可能的。例如,'int a [10] = {5}'初始化一个数组而不分配它,就像你问的那样。然而,这看起来并不像你真正感兴趣的。 – AnT 2010-04-20 16:24:35