如何使类可分配给基元?

Ren*_*ene 3 c++ primitive operator-overloading variable-assignment

我想知道是否有可能使我的

class Time
{
    public:
        Time();

        explicit
        Time(
            const double& d);

        Time&
        operator=(
            const Time& time);

        Time&
        operator=(
            const double& d);
};
Run Code Online (Sandbox Code Playgroud)

可以分配给原始双精度吗?

我经常使用 Time 作为 IV,并且需要对其进行大量标量操作,因此它需要与 DV 进行“混合”,DV 通常是普通的双精度数。添加第二个赋值运算符则起到了相反的效果。

尽管如此,许多操作仍然无法完成。我一直在 Time 类之外编写运算符,以允许在 Time 和 double 之间进行加法、减法、乘法和除法。但由于不允许在类之外使用赋值运算符,因此我无法克服最后一个错误:

Error   1   error C2440: 'initializing' : cannot convert from 'double' to 'Time'    linearfit.cpp   67
Run Code Online (Sandbox Code Playgroud)

有人有这方面的经验吗?

谢谢!

flo*_*olo 5

您必须编写/覆盖一个运算符。在本例中为强制转换运算符。定义一个方法

operator double() { return double_however_computed_from_your_time; };
Run Code Online (Sandbox Code Playgroud)