Перегрузка оператора сравнения для объектов разных классов

Тема в разделе "Общие вопросы по С и С++", создана пользователем @LE}{@NDER, 28 май 2007.

  1. @LE}{@NDER

    @LE}{@NDER Гость

    Добрый день!
    Срочно нужна помощь в реализации перегрузки оператора сравнения для 2х объектов: один объект базового класса, второй - класса-наследника.
    Знаю, что для объектов одноко класса это бы работало приблизительно так:
    bool сNaslednik::eek:perator <(cNaslednik obj) const
    {
    int var1=speed;
    int var2=obj.speed;
    return (var1<var2)?true:false;
    }
    void main()
    {
    Naslednik Object1, Object2;
    if (Object1<Object2)
    cout<<"Object1 is slower than Object2"<<endl;
    else
    cout<<"Object2 is slower than Object1"<<endl;
    }
    Но надо, чтобы один объект принадлежал базовому классу и параметр speed - переменная protected: базового класса, передаваемая в класс наследник методом базового класса void GetSpeed() .
    Желательно по-быстрее, поскольку экзамен на носу!!! :rolleyes:
    Буду безмерно благодарен.
    @LE}{@NDER
     
  2. mms

    mms Гость

    Хых. Если я всё правильно понял:

    Код (Text):
    bool сNaslednik::operator <(cBase obj) const
    {
    return GetSpeed() < obj.GetSpeed();
    }
     
  3. @LE}{@NDER

    @LE}{@NDER Гость

    Огромное спасибо! Проверил - работает!!! :)

    Ошибка, как я понял, была в том, что в параметрах я передавал тот же класс:
    bool сNaslednik::eek:perator <(cNaslednik obj) const, когда изменил на
    bool сNaslednik::eek:perator <(cBase obj) const, все запахало
     
  4. mms

    mms Гость

    Всегда рад помочь :)
     
Загрузка...

Поделиться этой страницей