Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
#1

операторы hand made - C++

02.01.2012, 13:46. Просмотров 491. Ответов 8
Метки нет (Все метки)

Можно ли создавать свои операторы для встроенных типов. Например сделать оператор который работал бы как функция abs.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2012, 13:46     операторы hand made
Посмотрите здесь:

С++.Операторы в С++: условные операторы, операторы break и continue - C++
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном ответе найти точки пересечения.

right-hand operand - C++
#include <iostream> #include <cmath> #include <ctime> using namespace std; const int n=3; template<class T>T after_C(T *m,int...

No operator found which takes a right-hand operand - C++
Кто подскажет в чем ошибка? #include <iostream> #include <vector> class LongNumber { public:

«Языки и технологии программирования» «Операторы цикла. Условные операторы» - C++
Не получается сделать что бы программа выводила все значения в промежутке, она выводит только одно. условия | ((z^3)+sin...

Error C2679: binary '>>': no operator found which takes a right-hand operand of type - C++
нужно написать программу обработки структур. в программе использовать структуру, содержащую поля с информацией об учащихся: - фамилия и...

Ошибка: error C2679: binary '<<' : no operator found which takes a right-hand operand of type - C++
Нужно создать класс List для представления простого списка. Подскажите, почему появляется такая ошибка: error C2679: binary '&lt;&lt;' : no...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.01.2012, 14:07     операторы hand made #2
Нет. Можно перегрузить для класса, но это не кошерно(имеется в виду такие функции, как abs, что и предоставлено в данном коде на примере пергрузки унарного минуса).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
 
template <class T> class Foo
{
    T a;
    
public:
    Foo(T num): a(num)
    {
        
    }
    
    Foo& operator - ()
    {
        if(a < 0)
            a = -a;
        return *this;
    }
    
    friend std::ostream& operator << (std::ostream& stream, Foo f)
    {
        stream << f.a;
        return stream;
    }
};
    
int main()
{
    Foo<float> f(-5.4);
    Foo<int> f1(2);
    std::cout << f << ' ' << f1 << std::endl;
    std::cout << -f << ' ' << -f1 << std::endl;
    return 0;
}
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
02.01.2012, 15:47     операторы hand made #3
Цитата Сообщение от cyberobot Посмотреть сообщение
Например сделать оператор который работал бы как функция abs.
Какой оператор? Можно любой перегрузить
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
02.01.2012, 16:35     операторы hand made #4
Цитата Сообщение от go Посмотреть сообщение
Какой оператор? Можно любой перегрузить
так не любой же оператор можно перегрузить,вроде
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
02.01.2012, 16:39     операторы hand made #5
vetal10, всё верно
Код
.    .*   ::   ?:   sizeof
нельзя перегружать.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
02.01.2012, 19:50     операторы hand made #6
Цитата Сообщение от vetal10 Посмотреть сообщение
так не любой же оператор можно перегрузить,вроде
За чем так буквально воспринимать. Имелось ввиду, что по логике ни один из операторов не подходит для это.
В варианте soon,
Код
-
должен менять знак на противоположно (по логике), а не находить абсолютное значение
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
02.01.2012, 19:53     операторы hand made #7
на случае если ТС подумает что любой действительно можно перегружать
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
02.01.2012, 19:59     операторы hand made #8
ТС вообще спрашивал "для встроенных типов".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2012, 20:07     операторы hand made
Еще ссылки по теме:

no operator found which takes a right/left-hand operand of type "AR" - C++
Нашел на форуме исходник программы, собрал, но выдает ошибку описанную выше #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Ошибка "binary '==': no operator found which takes a left-hand operand of type" - C++
while (currentNode != endNode) { nextNode = path; nextNode1 = path; takeRoute.x = nextNode; ...

Исправить ошибку "error C2679: binary '*' : no operator found which takes a right-hand operand of type" - C++
matiza.h #pragma once template &lt;typename N&gt; class matriza { protected: int stroka; N *mas; public: matriza()

Операторы C++ - C++
Пожалуйста


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

Или воспользуйтесь поиском по форуму:
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
02.01.2012, 20:07     операторы hand made #9
my bad
Yandex
Объявления
02.01.2012, 20:07     операторы hand made
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru