mle*_*977 10 c++ gcc reference default-value
我正在开发Linux gcc环境,我需要初始化具有默认值的类的函数参数.当我使用类的临时实例执行此操作时,它会产生如下错误:"[function argument]的默认参数具有类型[类名].例如:
void foo(std::wstring& str = std::wstring())
Run Code Online (Sandbox Code Playgroud)
错误:'std :: wstring&str'的默认参数类型为'std :: wstring'PS此代码编译时没有任何错误或VC++警告.
如何初始化默认值?
Sim*_*one 10
你可以创建一个函数重载:
void foo() {
std::wstring str;
foo(str);
}
Run Code Online (Sandbox Code Playgroud)
但我真的很想念.
编辑:我的意思是,该函数的目的几乎肯定是修改输入字符串.如果您提供以后无法访问的空输入字符串,为什么要这么麻烦?
您不能将非常量引用绑定到右值。价值传递会起作用:
void foo(std::wstring str = std::wstring())
Run Code Online (Sandbox Code Playgroud)
或通过引用引用常量:
void foo(const std::wstring& str = std::wstring())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4083 次 |
| 最近记录: |