Pra*_*van 1 c++ linux dictionary stl
我有一个这样的功能:
int insert(std::string, std::string, std::map<std::string, std::string>&)
Run Code Online (Sandbox Code Playgroud)
由于第三个参数是引用,因此为该参数提供默认参数的正确方法是什么?
我想要的是默认设置std::map<std::string, std::string>& = VAL,并且仅当 VAL 不是默认值时才使用地图。
右值不会绑定到非常量临时值。
但如果默认值有意义,您可能不会修改它,在这种情况下将其设置为常量,然后就std::map<std::string, std::string>()可以用作默认值了。IE:
int insert(std::string x, std::string y,
const std::map<std::string, std::string> &m =
std::map<std::string, std::string>())
Run Code Online (Sandbox Code Playgroud)
如果您确实需要非常量引用,只需创建一个带有一个传递局部变量的参数的重载。
广告评论:好的。您可以传递全局变量作为默认参数。简单地
int insert(std::string x, std::string y,
std::map<std::string, std::string> &m = GLOBAL_map);
Run Code Online (Sandbox Code Playgroud)
我应该警告您,修改其参数(尤其是非第一个参数)的函数是相当糟糕的设计,全局变量更是如此。
| 归档时间: |
|
| 查看次数: |
4207 次 |
| 最近记录: |