当使用运算符重载作为前缀和后缀增量时,我从编译器得到错误:
“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”是我正在递增的论点。我做错了什么?
答案 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)声明;纠正第二个操作员 -