我想设置我的函数与类对象参数设置为默认值.但是当我尝试这样做时,编译失败了.
class base {
// ...
};
int myfunc(int a, base b = NULL) {
if (NULL = b) {
// DO SOMETHING
} else {
// DO SOMETHING
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,当我尝试编译它时,这给了我"默认参数base b int int type"的错误
Luc*_*ore 20
对象不能NULL在C++中.
要将参数设置为默认值,只需使用:
int myfunc(int a, base b = base())
Run Code Online (Sandbox Code Playgroud)
ten*_*our 14
这里有三个明显的选择.
首先,使用重载,以便调用者可以选择是否通过b.
int myfunc(int a) { ... }
int myfunc(int a, base& b) { ... }
Run Code Online (Sandbox Code Playgroud)
这样您就可以b在不必使用指针的情况下通过.请注意,您应该创建b引用或指针类型以避免切片对象.
其次,如果您不想要2个单独的实现,请创建b一个可以设置为的指针NULL.
int myfunc(int a, base* b = NULL) { ... }
Run Code Online (Sandbox Code Playgroud)
第三,你可以用一些东西来封装可空的概念,比如boost::optional.
int myfunc(int a, boost::optional<base&> b = boost::optional<base&>()) { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18742 次 |
| 最近记录: |