2017-07-12 86 views
1

我想有取一个列表作为参数的方法,但这个名单应该有默认值的std ::列表paramerter,这里是什么,我需要一个无效的例子:C++使用默认值

void myFunc(std::list<CString> const & myList = std::list<CString>({"Val1", "Val2", "Val3"})); 

当我尝试使用它时,我得到

Error C2143: syntax error: missing ')' before '{'

+0

,你可以检查它是否是空的,初始化那个.. –

+0

你怎么知道这个尝试是无效的?你会得到什么错误? –

+0

它有什么问题?我不知道'CString'是什么,但否则你的方法[似乎很好](http://ideone.com/oT4uR4) – user463035818

回答

2

Micrsoft Visual Studio 2010 does not support std::initializer_list。当你做

std::list<CString>({"Val1", "Val2", "Val3"}) 

您尝试使用它std::initializer_list构造函数初始化该std::list。由于MSVS 2010不支持您可以调用它。

一两件事你可以做的是编写创建和初始化像

std::list<CString> default_list() 
{ 
    std::list<CString> temp; 
    temp.push_back("Val1"); 
    temp.push_back("Val2"); 
    temp.push_back("Val3"); 
    return temp; 
} 

列表的功能,那么你可以使用像

void myFunc(std::list<CString> const & myList = default_list());