postfix前缀运算符重载错误c ++

时间:2011-11-24 09:35:51

标签: c++ operator-overloading operator-keyword postfix-operator prefix-operator

当使用运算符重载作为前缀和后缀增量时,我从编译器得到错误:

  

“Fajl Fajl :: operator ++(int)”:已定义或声明的成员函数“

以下是operator ++的标题:

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”是我正在递增的论点。我做错了什么?

3 个答案:

答案 0 :(得分:5)

Fajl operator ++ (int); // postfix
Fajl operator ++ (int); // postfix
              ^^
           should be --

答案 1 :(得分:1)

很难确定,但也许它指的是你复制了后缀增量声明这一事实:

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

据推测,其中一个被认为是--而不是++。这很可能导致另一个问题:你显然定义一个operator--,但它没有在类定义中声明。如果它还没有,编译器几乎肯定会抱怨它。

答案 2 :(得分:1)

你有两个相同的Fajl运算符++(int)声明;纠正第二个操作员 -