ошибка перегрузки оператора префикса постфикса c ++

При использовании перегрузки оператора для приращения префикса и постфикса я получаю сообщение об ошибке от компилятора:

«Файл Файл :: 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;
}

«Файл» - это класс, а «поз» - его аргумент, который я увеличиваю. Что я делаю неправильно?


comment
Еще раз взгляните на заголовочный файл, разве это не две перегрузки postfix ++?   -  person Some programmer dude    schedule 24.11.2011


Ответы (2)


Трудно быть уверенным, но, возможно, это относится к тому факту, что вы продублировали объявление для приращения постфикса:

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

Предположительно один из них должен был быть -- вместо ++. Это, скорее всего, приводит к другой проблеме: вы, очевидно, определили operator--, но он не объявлен в определении класса. Если этого еще не произошло, компилятор почти наверняка пожалуется на это.

person Jerry Coffin    schedule 24.11.2011

У вас есть 2 идентичных объявления Fajl operator ++ (int); Исправьте 2-е на оператора -

person Pavel Zhuravlev    schedule 24.11.2011