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

Перегрузка операторов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить Программу с помощью процедуры функции http://www.cyberforum.ru/cpp-beginners/thread56777.html
Задание такое. С помощью процедуры функции решить слудующую задачу. В библиотеке 10 читателей , каждый читатель в один момент может взять 1 книгу. Составить программу которая подсчитывает сколько...
C++ программа С++ привет.помогите определить please.дана целочисленная квадратная матрица.: 1.произведение элементов в тех строках ,которые не содержат отрицательных элементов. 2.максимум среди сумм элементов... http://www.cyberforum.ru/cpp-beginners/thread56771.html
C++ Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент
найти сумму элементов в тех строках,которые содержат хотя бы один отрицательный элемент.
программа C++
Для заданной матрицы размером 8 на 8 найти такие к,что к-я строка матрицы совпадает с к-м столбцом.
C++ Работа с BITMAP http://www.cyberforum.ru/cpp-beginners/thread56766.html
Здравствуйте. Подскажите плз. нет ли в c++ стандартной функции преобразования BITMAP из 32-х битного в 1-битный.Я имею в виду чтобы каждый пиксель представлялся с помощью 1 бита. Заранее спасибо!
C++ Разработка интерфейса Подскажите программу в которой можно изменить вид компонента. Например у TMediaPlayer или же сделать свою! Или же такое почти не возможно? плиз напишите кто что знает про это всё я нашел что... подробнее

Показать сообщение отдельно
like-nix
351 / 32 / 6
Регистрация: 02.07.2008
Сообщений: 311

Перегрузка операторов - C++

16.10.2009, 14:22. Просмотров 869. Ответов 1
Метки (Все метки)

Всем привет!

Помогите разобраться с перегрузкой операторов.
Хочу реализовать класс который будет представлять тип double с определенной точностью. Еще нужна возможность преобразования в тип int и double.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
template <unsigned int precision>
class SDouble
{
public:
    // uninitialized
    SDouble ();
    // construction
    SDouble (double fX);
    SDouble (int fX);
    //copy constructor
    SDouble (const SDouble& rkSD);
    
    // assignment
    inline SDouble& operator= (const SDouble&);
    
    // comparison
    bool operator== (const SDouble&) const;
    bool operator!= (const SDouble&) const;
    bool operator<  (const SDouble&) const;
    bool operator<= (const SDouble&) const;
    bool operator>  (const SDouble&) const;
    bool operator>= (const SDouble&) const;
    
    //unary operations
    inline SDouble operator-() const;
    inline SDouble operator+() const;
    
    //arithmetic operations
    inline SDouble operator+ (const SDouble&) const;
    inline SDouble operator- (const SDouble&) const;
    inline SDouble operator* (const SDouble&) const;
    inline SDouble operator/ (const SDouble&) const;
    
    // arithmetic updates
    inline SDouble& operator+= (const SDouble&);
    inline SDouble& operator-= (const SDouble&);
    inline SDouble& operator*= (const SDouble&);
    inline SDouble& operator/= (const SDouble&);
    
    //arithmetic operations 
    template <unsigned int precision>
    friend SDouble<precision> operator+ (double s_value, const SDouble<precision>&);
    template <unsigned int precision>
    friend SDouble<precision> operator- (double s_value, const SDouble<precision>&);
    template <unsigned int precision>
    friend SDouble<precision> operator* (double s_value, const SDouble<precision>&);
    template <unsigned int precision>
    friend SDouble<precision> operator/ (double s_value, const SDouble<precision>&);
    
    //type cast
    operator int();
    operator double();
    
    //value
    double getValue() const;
private:
    
    double supp_val_precision(double) const;
    
private:
    double m_Value;
};
При попытке выполнить код:

C++
1
2
    SDouble<4> sd(7.12);
    SDouble<4> sdr =-sd + 5.0;
Получаю:

Код
1>d:\programming\freelance\mathematic_library\release\my_new_library001\my_new_library\main.cpp(443) : error C2666: 'SDouble<degree>::operator +' : 3 overloads have similar conversions
1>        with
1>        [
1>            degree=4
1>        ]
1>        d:\programming\freelance\mathematic_library\release\my_new_library001\my_new_library\sdouble.hpp(39): could be 'SDouble<degree> SDouble<precision>::operator +(const SDouble<precision> &) const'
1>        with
1>        [
1>            precision=4
1>        ]
1>        or       'built-in C++ operator+(int, double)'
1>        or       'built-in C++ operator+(double, double)'
1>        while trying to match the argument list '(SDouble<precision>, double)'
1>        with
1>        [
1>            precision=4
1>        ]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru