C++ 构造函数,一个用于度数,一个用于弧度

标签 c++ constructor

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/

相关文章:

javascript - 在 JavaScript 中动态重命名或设置对象名称

c++ - 使用静态方法初始化 const 类字段是好事还是坏事?

c++ - 运行任何带有一半参数的仿函数

C# - 在一些计算之后从另一个构造函数调用构造函数

c++ 用作虚拟基础的类可以具有带参数的构造函数吗?

C++ std::set::erase 与 std::remove_if

c++ - 构造函数和转换

c++ - 使用并行构建时 PRE_TARGETDEPS 失败

c++ - "more than one instance of overloaded function "标准::战俘 "matches the argument list"

c++ - 在 C++ 中避免 void*