0

=クラス ポインターの演算子をオーバーロードできますか。この例では、ポインター 'Cutie*' の 'operator =' をオーバーロードしようとしています。

class Cutie    
{
public:
    int Krait;

    Cutie() : Krait(0)
    {
    }
};

Cutie* operator = (Cutie* p, Cutie* q)
{
    if(p == 0)
    {
        if(0 < Krait)
            Krait--;
    }
    else
        Krait++;
}

上記の定義には誤りがあります。ポインターの割り当てをカウントする定義を探しています。

Cutie c;
Cutie* p = 0;
p = &c;

'p -> Krait' は '1' になるはずです。

4

1 に答える 1

5

いいえ、ポインタのみを引数として取る非メンバーのオーバーロードされた演算子関数を使用することはできません。

演算子関数は、非静的メンバー関数であるか、非メンバー関数であり、型がクラス、クラスへの参照、列挙、または列挙への参照であるパラメーターを少なくとも 1 つ持つ必要があります。

于 2013-03-14T18:04:47.000 に答える