从另一个参数的值设置默认参数值
Set default parameter value from another paramater's value
是否可以实现这样的功能,如果未指定,该参数的值将默认为另一个参数的值?
示例:
class Health
{
public:
// If current is not specified, its value defaults to max's value
Health(int max, int current = max) : max_(max), current_(current) { }
int max_;
int current_;
};
就像现在一样,我遇到了编译错误:
error: 'max' was not declared in this scope
Health(int max, int current = max) : max_(max), current_(current) { }
^
您必须提供重载:
class Health
{
public:
Health(int max, int current) : max_(max), current_(current) { }
Health(int max) : max_(max), current_(max) {}
// or `Health(int max) : Health(max, max) {}` since C++11
int max_;
int current_;
};
您可以将参数默认为不应接受的值,然后在初始化时使用 ?
运算符进行检查
class Health
{
public:
// If current is not specified, its value defaults to max's value
Health(int max, int current = 0) : max_(max), current_(current == 0 ? max : current) { }
int max_;
int current_;
};
是否可以实现这样的功能,如果未指定,该参数的值将默认为另一个参数的值?
示例:
class Health
{
public:
// If current is not specified, its value defaults to max's value
Health(int max, int current = max) : max_(max), current_(current) { }
int max_;
int current_;
};
就像现在一样,我遇到了编译错误:
error: 'max' was not declared in this scope
Health(int max, int current = max) : max_(max), current_(current) { }
^
您必须提供重载:
class Health
{
public:
Health(int max, int current) : max_(max), current_(current) { }
Health(int max) : max_(max), current_(max) {}
// or `Health(int max) : Health(max, max) {}` since C++11
int max_;
int current_;
};
您可以将参数默认为不应接受的值,然后在初始化时使用 ?
运算符进行检查
class Health
{
public:
// If current is not specified, its value defaults to max's value
Health(int max, int current = 0) : max_(max), current_(current == 0 ? max : current) { }
int max_;
int current_;
};