Форум программистов, компьютерный форум 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
16.10.2009, 14:22     Перегрузка операторов
Всем привет!

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

Код
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;
};
При попытке выполнить код:

Код
    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>        ]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru