0

「--」後置演算子をオーバーロードしようとしています。私はこのコードを持っています:

class Counter
{
 private:
    int count;
 public:
    Counter()
    { count = 0; }
    Counter(int c)
    { count = c; }

    void setCount(int c)
    { count = c; }
    int getCount()
    { return count; }

    int operator--()
    {
       int temp = count;
       count = count - 1;
       return temp;
    }
};

次に、main次の関数呼び出しがあります。

 Counter a; 
 a.setCount(5); 
 cout << a-- << endl;

これにより、次のエラーが表示されます。 error: no ‘operator--(int)’ declared for postfix ‘--’, trying prefix operator instead

しかし、次のようにoperator--関数を呼び出すと、問題なく動作します。

 cout << a.operator--() << endl;

何を与える?正常に動作するはずです。

4

2 に答える 2

8

後置演算子をオーバーロードするintには、関数シグネチャで仮引数を指定する必要がありますoperator--(int)。あなたが定義したのは、前置デクリメント演算子です。詳細については、このFAQを参照してください。

于 2012-06-27T03:51:21.867 に答える
8

int後置演算子は、前置演算子と区別するために引数としてaを取ります。

接尾辞:

int operator--(int)
{
}

プレフィックス:

int operator--()
{
}
于 2012-06-27T03:51:58.717 に答える