【问题标题】:C++ std::list paramerter with default values具有默认值的 C++ std::list 参数
【发布时间】:2017-12-16 23:25:26
【问题描述】:

我想要一个将列表作为参数的方法,但是这个列表应该有默认值,这是我需要的无效示例:

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

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

错误 C2143:语法错误:在 '{' 之前缺少 ')'

【问题讨论】:

  • 您可以检查它是否为空并将其初始化为..
  • 你怎么知道这个尝试是无效的?你得到什么错误?
  • 它有什么问题?我不知道CString 是什么,否则你的方法seems to be fine
  • 请显示minimal reproducible example。我没有设法重现您在此处显示的行报告的错误
  • @muaz 看看this list

标签: c++ visual-studio-2010 parameters default-value stdlist


【解决方案1】:

微软 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());

【讨论】:

    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2015-02-04
    • 1970-01-01
    • 2014-03-09
    • 2017-03-09
    相关资源
    最近更新 更多