2

プレフィックスとポストフィックスのインクリメントに演算子のオーバーロードを使用すると、コンパイラからエラーが発生します。

"Fajl Fajl :: operator ++(int)':メンバー関数はすでに定義または宣言されています"

演算子++のヘッダーは次のとおりです。

Fajl& operator ++ (); // prefix
Fajl& operator -- (); // prefix
Fajl operator ++ (int); // postfix
Fajl operator ++ (int); // postfix

そして私の実装:

Fajl& Fajl::operator ++ () // prefix
{
    ++(*poz);
    return *this;
}

Fajl& Fajl::operator -- () // prefix
{
    --(*poz);
    return *this;
}

Fajl Fajl::operator ++ (int dummy) // postfix
{
    Fajl temp(*this);
    ++(*this);
    return temp;
}

Fajl Fajl::operator -- (int dummy) // postfix
{
    Fajl temp(*this);
    --(*this);
    return temp;
}

「Fajl」はクラスであり、「poz」は私がインクリメントしているその引数です。私は何が間違っているのですか?

4

3 に答える 3

5
Fajl operator ++ (int); // postfix
Fajl operator ++ (int); // postfix
              ^^
           should be --
于 2011-11-24T09:39:31.143 に答える
1

確かではありませんが、おそらく、接尾辞のインクリメントの宣言を複製したという事実を参照しています。

Fajl operator ++ (int); // postfix
Fajl operator ++ (int); // postfix

--おそらくそれらの1つはの代わりであると思われました++。これは別の問題につながる可能性が非常に高いです。明らかに、を定義operator--ましたが、クラス定義で宣言されていません。まだの場合、コンパイラはほぼ確実にそれについても文句を言います。

于 2011-11-24T09:40:15.837 に答える
1

Fajl演算子++(int)の2つの同一の宣言があります。2番目のものをオペレーターに修正します--

于 2011-11-24T09:41:05.600 に答える