C++ 中的最佳实践是什么,定义两个独立的构造函数,一个以度数输入,另一个以弧度输入?我用直接的方式做的问题是两种方法的签名对编译器来说看起来是一样的,即使参数名称标识哪个是哪个,并且编译器标记了一个 re-declaration
错误。这可以在不引入另一个字段的情况下完成吗?
我可以通过添加一个额外的 bool 参数来使用单个构造函数来完成此操作,该参数将允许选择要传递的单位,并在正文中使用 if。
最佳答案
使用 named constructor idiom .将您的构造函数设为私有(private),并选择您喜欢的参数类型、度数或弧度。然后创建适当命名的静态成员函数来进行必要的转换。
class Angle {
public:
static Angle radians(double r) { return Angle(r); }
static Angle degrees(double d) { return Angle(d / 180.0 * PI); }
private:
double angle_in_radians;
Angle(double r) :angle_in_radians(r) {}
};
关于C++ 构造函数,一个用于度数,一个用于弧度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45220699/