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

您有 2 个相同的 Fajl 运算符 ++ (int) 声明;将第二个更正为操作员-

于 2011-11-24T09:41:05.600 回答
1

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

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

据推测,其中之一应该是--而不是++. 这很可能会导致另一个问题:您显然已经定义了 an operator--,但它没有在类定义中声明。如果还没有,编译器几乎肯定也会抱怨这一点。

于 2011-11-24T09:40:15.837 回答