如何将矢量的矢量作为函数中的默认参数传递,C++

How to pass vector of vector as default argument in functions, C++

IDE 显示最后一个参数有误。我是 C++ 的新手,无法弄清楚。 请帮忙。提前致谢。

void Box_2(vector<vector<int>> &v,
           string text1 = "", 
           string text2 = "",  
           vector<vector<int>> &trace = {}
)

问题是我们无法将左值引用绑定到non-const对象到相应类型的临时对象.

例如,

int &ref = 5; //THIS WILL NOT WORK
const int &REF = 5; //THIS WILL WORK 

为了解决这个错误你可以使最后一个参数name成为一个对const对象的左值引用允许绑定到临时文件,如下所示:

void Box_2(vector<vector<int>> &v,
           string text1 = "", 
           string text2 ="",  
//---------vvvvv------------------------------------->low level const added here
           const vector<vector<int>> &trace = {}
);

请注意,在上面您将无法更改 name。这是添加 low-level const.

的结果

您也可以完全不使用默认参数,如下所示:

void Box_2(vector<vector<int>> &v, string text1, string text2, vector<vector<int>> &trace);

现在您将能够更改 name 绑定的基础向量。