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

Перегрузить приведение типов для шаблонного класса

26.12.2016, 15:42. Показов 2478. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хай.

Имеется
C++
1
2
3
4
5
6
7
8
9
10
template <class T>
class fraction
{
 
public:
    T top; T bot;
    fraction(T a = 0, T b = 1) :top(a), bot(b) {}
...
 
};
- класс дробей. Просят "преобразование типа
fraction в double (перегруженная операция преобразования типа; просто поделить в вещественных числах)."

но я что-то не могу разобраться, как перегрузить static_cast или что-то ещё
как перегружаются +, -, = итп - знаю

спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2016, 15:42
Ответы с готовыми решениями:

Как перегрузить операторы для шаблонного класса?
Собственно задание: Нужно написать класс описывающий обычный вектор на плоскости. Для этого...

Перегрузить operator<<() для шаблонного класса (перегрузка оператора вывода)
Здравствуйте. Перегружаю оператор вывода для шаблонного класса. using namespace std; template...

Хочу перегрузить iterator для пользовательского шаблонного класса контейнера
Осваивал шаблонные параметры шаблоны на примере шаблонов контейнерных классов, и открыл для себя...

Несколько типов данных для шаблонного класса
неужели нельзя использовать сразу несколько типов данных, не ясно же какие данные в массив мы...

3
148 / 118 / 37
Регистрация: 27.10.2011
Сообщений: 690
26.12.2016, 15:56 2
попробуй нечто эдакое :
C++
1
2
template<typename R>
operator R() { return static_cast<R>(top) / static_cast<R>(bot); }
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
26.12.2016, 15:56 3
Тебе нужно перегрузить не static_cast, а приведение к типу double. Функция приведения выглядит так: operator type(), где type - тип, к которому нужно преобразовать. В твоём случае это будет выглядеть как-то так:
C++
1
2
3
operator double() {
    return top/bot;
}
0
148 / 118 / 37
Регистрация: 27.10.2011
Сообщений: 690
26.12.2016, 16:01 4
likehood, при целочисленном T, у твоего оператора будет неправильное поведение. Нужно кастануть или числитель или знаменатель к double
0
26.12.2016, 16:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2016, 16:01
Помогаю со студенческими работами здесь

Как перегрузить оператор "+" для шаблонного класса, инстанцированного разными типами?
подскажите как перегрузить оператор &quot;+&quot; для шаблона , инстанцированных разными типами ...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор *
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра?
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); }...

Вызов метода у шаблонного поля, шаблонного класса
Пытаюсь разобраться с шаблонами- задача создать шаблонный класс, у которого есть шаблонное поле. и...


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

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