【发布时间】:2012-11-21 16:49:28
【问题描述】:
我正在尝试将Data* 指针数组传递给一个函数。
void f(int argc, Data** argv) {
...
}
// at this point, I have Data* x, Data* y initialized
f(2, {x, y});
有没有办法让这样的代码运行,其中数组定义内联在函数调用中?现在,返回的错误是
closure3.cc:15:8: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x [enabled by default]
closure3.cc:15:16: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘Data**’ for argument ‘2’ to ‘void f(int, Data**)’
有没有办法让数组内联实例化,是否可以在没有 C++0x 的情况下做到这一点?提前致谢。
【问题讨论】:
-
您是否尝试过聆听那里的警告并将
-std=c++0x添加到您的编译行? -
强烈建议使用vector
> & 代替Data** 或者如果你不能使用C++,将标签改为“C”。 -
^ 这很可爱,但你知道内联的方法吗?还有@Cornstalks,我试过了。
-
差不多是C99;
f(2, (Data **){x, y});是复合文字。它不是 C++2011 AFAIK 的一部分。