Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с перегрузкой оператора =, c2679 error binary 
V
    Опции темы
surly
Дата 23.5.2010, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 20.1.2007

Репутация: нет
Всего: нет



еще раз доброго времени суток.
форум почитал, были схожие проблемы у людей, но никак не смог решить свою.
столкнулся с проблемой, связанной с перегрузкой оператора =.
операторы сравнения, арифм операций перегрузить получилось, а вот с = проблема.
Код

class Colour
{
public:
    Colour(void);
    Colour(double e, double g, double b);
    ...............................
    Colour operator +(Colour col);
    Colour operator -(Colour col);
    Colour operator *(Colour col);
    Colour operator *(double f);
    Colour operator /(double f);
    Colour operator =(Colour col);
    bool operator ==(Colour col);
#pragma endregion operators
        ...............................
};

......................................................
Colour Colour::operator /(double f)
{
    return Colour(Red / f, Green / f, Blue / f);
}

Colour Colour::operator =(Colour col)
{
    this->Red = col.Red;
    this->Green = col.Green;
    this->Blue = col.Blue;
    return *this;
}

bool Colour::operator==(Colour col)
{
    if (
        (this->Red == col.Red) && (this->Blue == col.Blue) && 
                (this->Green == col.Blue)
        )
        return true;
    else return false;
    
}

вроде написано все верно, но ошибка есть ошибка..
Код

Error    5    error C2679: binary '=' : no operator found which takes a right-hand operand of type 'const Colour' (or there is no acceptable conversion)


заранее благодарен за помощ в решении проблемы связанной с перегрузкой оператора.

Это сообщение отредактировал(а) surly - 23.5.2010, 18:20
PM MAIL   Вверх
kemiisto
Дата 23.5.2010, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Формальные аргументы перегруженных операторов для класса MyClass обычно константные ссылки const MyClass&. В случае оператора присваивания - возвращать нужно тоже ссылку.

Код

MyClass& operator=(const MyClass& rhs);


Не забудьте проверить присваивание самого себе:
Код

MyClass& MyClass::operator=(const MyClass& rhs) 
{
    // Check for self-assignment!
    if (this == &rhs)      // Same object?
      return *this;        // Yes, so skip assignment, and just return *this.

    ... // Deallocate, allocate new space, copy values...

    return *this;
}


Почитайте, короче, хотя бы что-то.

Это сообщение отредактировал(а) kemiisto - 23.5.2010, 18:48


--------------------
PM MAIL WWW GTalk Jabber   Вверх
surly
Дата 23.5.2010, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 20.1.2007

Репутация: нет
Всего: нет



спасибо, kemiisto.
вопрос решен =)
олсо, по твоей ссылке я бывал сегодня, но чет не обратил внимания, дается усталось =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.