![](/img/trans.png)
[英]How to convert std::set to std::map with a default value in c++
[英]How to set a default value for std::list argument in C++?
我想將一個空列表設置為list參數的默認值。 我嘗試使用{},list。(),NULL和{NULL}無濟於事。
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*>()
,
error: expected primary-expression before ‘.’ token
void f(treeNode* root, int &n, list<treeNode*> &path = list<treeNode*>.()){
void f(std::list<treeNode*> = ??);
您可以使用一對空的大括號:
void f(std::list<treeNode*> = {});
我試過使用... list。()
這是語法錯誤。
空值,
不能從指針常量初始化std::list
。
和{NULL}
這將初始化一個帶有單個null元素的非空列表。
{} ...無濟於事。
自C ++ 11起,這是正確的解決方案。 在C ++ 11之前的標准中,您將不得不重復類型名稱:
void f(std::list<treeNode*> = std::list<treeNode*>())
編輯有關新問題:
void f(std::list<treeNode*> &path = ??);
這是不同的。 非常量左值引用不能綁定到初始化程序列表。 您必須:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.