11

クラス NS を定義しており、このクラスのオブジェクトに対して数学演算を実行できるようにしたいと考えています。私は、オーバーロードされた +、-、*、/、... を正常にコンパイルしました。私の問題は、次のような部分を持つコードをコンパイルできないことです。

NS a,b;
a = -b;

オブジェクトのネガを定義するにはどうすればよいですか?

4

1 に答える 1

26

-二項演算子のオーバーロードと非常によく似た方法で行います。代わりに、メンバーの場合はnull関数、非メンバーの場合は単項関数にします。たとえば、メンバーとして:

class NS
{
  public:
    // Applies to this
    NS operator-() { /* implement */ }
};

非会員の場合:

class NS
{
    friend NS operator-(const NS&);
};

// Applies to obj
NS operator-(const NS& obj) { /* implement */ }
于 2013-04-27T12:41:51.133 に答える