Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
Alex_p
1

Перегрузка оператора

26.11.2006, 21:08. Показов 3717. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, способ перегрузки операторов >= и <= в следующей строке
C++
1
if ( ob.str[i] >= '0'  && ob.str[i] <= '9' )
Мой вариант не перегружает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MyClass
{
             std::string str[SZ];
 public:
    int   operator>= (unsigned char ch)
};
//=================================
int MyClass::operator>=(unsigned char ch)
{
     MyClass tmp;
     for ( int i = 0; i < 10; i++)
          if ( tmp.str[i] >= ch)
                 return 1;
        else
                 return 0;
}
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2006, 21:08
Ответы с готовыми решениями:

Перегрузка оператора %
Подскажите пожалуйста как перегрузить оператор % для матрицы! #include &quot;StdAfx.h&quot; #include...

Перегрузка оператора ++
Написал префиксную перегрузку ++ Vremya &amp;Vremya::operator ++ () { int sec =...

Перегрузка оператора []
Сделал простой аналог auto_ptr для дин. массива. Файл #ifndef ARRAY_PTR_GUARD #define...

Перегрузка оператора
#include &lt;iostream&gt; class Node { public: char *s; int length; Node * next; public:...

6
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
27.11.2006, 01:07 2
Вы зря описываете объект tmp, который к тому же даже не инициализируете. Левый операнд определяемого вами оператора это объект, на который указывает this, а обращаясь к полям этого объекта this можно даже не указывать. Например, вместо this.str[i] можно просто писать str[i].
P.S. В вашем коде я не разобрался. Скорее всего он имеет смысловые ошибки.
0
Alex_p
27.11.2006, 02:12 3
Постараюсь подробнее объяснить содержание кода.
Есть строка типа string str[SZ], описанная в классе и имеющая размер SZ. Строка может сожержать буквенные и цифровые символы.
В цикле
C++
1
2
3
for (int i = 0; int < SZ; i++)
            if ( str[i] >= '0' && str[i] <= '9')
                   ...
Определяется, какой символ, буквенный или цифровой.
Пример приведён для цифровых символов строки
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
27.11.2006, 19:41 4
Есть строка типа <B>string str[SZ]</B>, описанная в классе и имеющая размер <B>SZ</B>. Строка может сожержать буквенные и цифровые символы.
Очевидно вы имели ввиду не str[SZ], а переменную типа string с максимальной длиной в SZ. Это разные вещи. В данном случае вы определили не одну стпроку а кучу (array of strings) размером SZ (т.е SZ строк).
В вашем случае вам надо определить просто string str ; и задать ему какое то значение. А затем уже можно получить список букв в этой строке через обращение к str.c_str[i].
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
27.11.2006, 20:05 5
Очевидно, вы имели ввиду не <STRONG>string str[SZ] </STRONG>а <STRONG>char str[SZ]</STRONG> Ведь вам нужно, чтобы str[i] имел тип char, иначе его нельзя будет сравнить с константой '0'.
0
Alex_p
27.11.2006, 20:42 6
Прошу прощения за ошибочность своего высказывания.
В классе определяется std::string str[SZ] , где SZ это максимальный размер массива str.
Если, как вы предлагаете, описать в классе не std::string str[SZ], а просто std::string str, то ошибок, указывающих на выше приведённую строку, компиллятор не выдаёт.
Alex_p
27.11.2006, 20:54 7
Выбор такого подхода обусловлен следующим:
В функции, члене этого класса, у меня появляется перечисление
enum digit { A = 1, B, ..., Z};
digit array[] = {A, ..., Z};

Строка, как я уже сказал, может содержать и цифры и буквы, поэтому, когда необходимо выяснить, какая буква в массиве str, я написал:
в цикле
C++
1
2
3
if ( str[i] == array[j] ) // поиск буквы из 
                          //массива str
                         // в массиве array
И вот в этом самом месте получаю сообщение об ошибке (перегрузка оператора operator[]()).
Правилен ли мой выбор такого подхода?
27.11.2006, 20:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2006, 20:54
Помогаю со студенческими работами здесь

Перегрузка оператора ->
скажите, а какие особенности перегрузки -&gt; ?

перегрузка оператора +
Не могу понять: в 184 строке отказывается работать. Без нее - все нормально. Скорее всего...

Перегрузка оператора =
Скажи пожалуйста в каких случаях нужно перегружать оператор = ?

Перегрузка оператора ==
Я уже встречала подобный вопрос на этом форуме, но у меня всё равно что-то не получается Вот...

Перегрузка оператора[]
Пример взят из книги Лафоре, тема перегрузка операций. Выдает ошибки: 1.Требуется идентификатор....

Перегрузка оператора ()
Никак не могу разобраться с перерузкой оператора () и в литературе не могу найти доходчивое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru