如何初始化一个数组并将其作为参数传递而不声明它?

时间:2014-05-26 13:46:40

标签: c++

如何初始化数组并将其作为参数传递而不声明它?我想在不使用中间数组color的情况下在一行中编写以下内容。

unsigned char color[3] = {100, 20, 0};
paintWithColor(color);

该函数声明为void paintWithColor( const unsigned char* )。 以下不起作用:

paintWithColor({100,20,0});

如果我有任何错误,我很抱歉。

1 个答案:

答案 0 :(得分:2)

使用C ++ 11,您可以使用初始化列表的重载:

#include <iostream>

void paintWithColor(const unsigned char* ) {
    std::cout << "Painting\n";
}
void paintWithColor(std::initializer_list<unsigned char> colors) {
    paintWithColor(colors.begin());
}

int main()
{
    paintWithColor({100,20,0});
}

注意:这适用于MSVC 2013(请参阅:http://blogs.msdn.com/b/vcblog/archive/2013/12/02/c-11-14-core-language-features-in-vs-2013-and-the-nov-2013-ctp.aspx