префикс постфиксного оператора, ошибка перегрузки c ++ - PullRequest
2 голосов
/ 24 ноября 2011

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

"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"его аргумент, который я увеличиваю.Что я делаю не так?

Ответы [ 3 ]

5 голосов
/ 24 ноября 2011
Fajl operator ++ (int); // postfix
Fajl operator ++ (int); // postfix
              ^^
           should be --
1 голос
/ 24 ноября 2011

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

1 голос
/ 24 ноября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...