我想将一个空列表设置为list参数的默认值。我尝试使用{},list。(),NULL和{NULL}无济于事。
b
使用void f(std::list<treeNode*> &path = ??);
时,
{}
使用error: could not convert ‘<brace-enclosed initializer list>()’ from ‘<brace-enclosed initializer list>’ to ‘std::list<treeNode*>&’
时,
list<treeNode*>()
答案 0 :(得分:3)
void f(std::list<treeNode*> = ??);
您可以使用一对空的大括号:
void f(std::list<treeNode*> = {});
我尝试使用...列表。()
这是语法错误。
NULL,
无法通过指针常量初始化std::list
。
和{NULL}
这将初始化一个带有单个null元素的非空列表。
{} ...无济于事。
这是自C ++ 11起的正确解决方案。在C ++ 11之前的标准中,您将不得不重复输入类型名称:
void f(std::list<treeNode*> = std::list<treeNode*>())
针对新问题进行编辑:
void f(std::list<treeNode*> &path = ??);
这是不同的。非常量左值引用不能绑定到初始化程序列表。您必须: