Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перегрузка оператора  (Прочитано 11053 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rash
Гость
« : 26-11-2006 19:00 » 

Подскажите способ перегрузки этих операторов >= и <= в следующей строке

Код:
...
         if ( ob.str[i] >= '0' && ob.str[i[ <= '9')
         ....
//=======================
class MyClass {
private:
             std::string str[SZ];
public:
                int operator>= (unsigned char ch)
};



Мой вариант не перегружает
Код:
//====================================
int MyClass::operatr>= (unsigned char ch)
{
       for ( int i = 0; i < 10; i ++)

               if ( ob.str[i] >= '0')
                  return 1;
            else
                    return 0;
« Последнее редактирование: 11-12-2007 18:12 от Алексей1153++ » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 26-11-2006 19:36 » 

во первых , у тебя очепятка - operatr , надо operator
(у тебя оно вообще компилица ? )


а во вторых, объект  ob  - он какого типа ? Улыбаюсь


а ещё , '9' - это char , а не unsigned char
« Последнее редактирование: 11-12-2007 18:14 от Алексей1153++ » Записан

rash
Гость
« Ответ #2 : 26-11-2006 20:28 » 

Согласен. Оператор пропустим т.к. в исходном тексте всё в порядке. Далееunsigned char поправим на char, а вот по поводу объкта, должен сказать, справедливое замечание.

Верно ли будет следующее
Код:
int MyClass::operator>= (char ch)
{   
     MyClass ob;   
     
     for ( int i = 0; i < 10; i ++) 
              if ( ob.str[i] >= '0')       
          return 1;       
     else           
         return 0;
или так
Код:
int MyClass::operatr>= (char ch)
{     

      for ( int i = 0; i < 10; i ++)   
            if (str[i] >= '0')       
           return 1;         
   else                   
           return 0;

« Последнее редактирование: 11-12-2007 18:16 от Алексей1153++ » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 26-11-2006 20:35 » 

а чем является непонятно откуда взявшийся массив
Код:
str[i]
?

если он является членом класса MyClass, то второй код, на первый взгляд, более подходит (хотя назначение цикла у тебя там не совсем понятно )) )
« Последнее редактирование: 26-11-2006 20:38 от Алексей1153 » Записан

Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 27-11-2006 07:52 » 

Да сдесь вообще не понятка полная. Мы не знаем что из себя представляет класс и для чего он предназначен. Что бы ответить как перегрузить операторы >= и <= в этом классе надо знать для каких целей ты используещь свой класс.
Одно хочу заметить, обычно операторы сравнения возвращают результат true или false, то есть тип возвращаемого значения я бы задал bool.
Хотя "хазяин барин", ты можеш перегрузить эти операторы и для того чтобы они в файл записывали 120 раз слово "привет".
Записан
rash
Гость
« Ответ #5 : 27-11-2006 15:24 » 

Да, согласен. Не всё тут ясно.

Есть строкаstd::string str[SZ], определённая в классе MyClass  в разделе private: и имеющая максимальный размер SZ
Строка может содержать как буквенные, так и цифровые символы.
В этой строке кода
Код:
if ( str[i] >= '0' && str[i[ <= '9')

я проверяю, текущий символ это цифра или нет.

И как вы считаете, правильно ли определена строка  std::string str[SZ]. Нужно ли указывать размер?
« Последнее редактирование: 11-12-2007 18:19 от Алексей1153++ » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 27-11-2006 20:33 » new

К private-строке str нельзя обратиться через ob.str (если не friend).
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines