C++运算符 - >复数的情况

jos*_*osf 1 c++ class operator-overloading complex-numbers

问题是实现Cplx具有两个双精度的类,xy表示复数的实部和虚部.
其中一个子任务是实现operator ->以下描述:

(z­->rez­->im):访问z(你必须实现改变之类z->re = 5)的实部和虚部.

我遇到麻烦operator ->我从来没有真正理解它是如何工作的所以我的问题是:如何->工作以及何时使用它以及如何在这个问题中应用这个想法.

Jar*_*d42 6

以下是您所要求的...但不确定它是您想要的:

template <typename T>
struct ReIm
{
    const ReIm* operator ->() const { return this; }
    ReIm* operator ->() { return this; }

    T re;
    T im;
};


struct Cplx
{
    double x;
    double y;

    ReIm<double> operator ->() const { return {x, y}; }
    ReIm<double&> operator ->() { return {x, y}; }
};
Run Code Online (Sandbox Code Playgroud)

演示