我想将变量a
作为方法func()
中的默认参数传递。
struct S {
int a;
int func(int b = a) {
// do something
}
};
编译时显示错误。有可能以某种方式绕过这件事吗?
不能将非静态成员的值用作默认参数。您可以使用过载:
struct S {
int a;
int func(int b) {
// do something
}
int func() { return func(a); }
};
另一种选择是使用std::optional
:
struct S {
int a;
int func(std::optional<int> ob = std::nullopt) {
int b = ob.value_or(a);
// do something
}
};