如何将其中一个结构方法中的结构成员作为默认参数传递?



我想将变量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
}
};

最新更新