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

Перегрузка оператора шаблонного класса в зависимости от типа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Циклы с накоплением (Сколько километров спортсмен пробежит за семь дней?) http://www.cyberforum.ru/cpp-beginners/thread721449.html
Начав тренировку, спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал дневную норму на 10% от нормы предыдущего дня. Сколько километров спортсмен пробежит за семь дней?
C++ Вычислить значение квадратов четных чисел натурального ряда от K до M. Вычислить значение квадратов четных чисел натурального ряда от K до M. http://www.cyberforum.ru/cpp-beginners/thread721446.html
C++ Cвести матрицу к треугольному виду
Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований свести матрицу к треугольному виду. Найти количество строк, среднее арифметическое элементов которых меньше заданной величины. Кто может сделайте пожалуйста.
C++ Динамический список
Здравствуйте. Помогите реализовать динамический список с такими функциями: Динамический список Конструкторы: по умолчанию, с параметрами и копирования. Деструктор. функции: вставка элемента из головы (хвоста) в заданном месте; вывода списка на экран; поиск элемента списка; получения головы (хвоста) списка;
C++ Разработать программу, выполняющую простейшие арифметические операции. http://www.cyberforum.ru/cpp-beginners/thread721409.html
Разработать вспомогательную программу) выполняющую простейшие арифметические операции. Исходные данные вводятся как параметры переменных окружения
C++ Нужно массив находящийся в файле разбить на столбцы и вывести среднее Всем :senor: Дан массив в файле.txt такого вида: "2012/8/10 12:55:14.21",0,0,25.07,43.7,1.97,1006.02,1050.96,60.29,-309.29,484.4,-0.11,,25.81,11.86,,53,2.95 "2012/8/10 12:55:14.72",0,0,25.07,43.79,1.98,1006.01,1050.94,60.4,-309.2,484.65,0.01,,25.81,11.9,,54,2.95 "2012/8/10 12:55:15.22",0,0,25.04,44,1.98,1006.01,1050.94,60.4,-309.2,483.96,-0.1,,25.8,11.94,,53,2.95 "2012/8/10... подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
06.12.2012, 14:08     Перегрузка оператора шаблонного класса в зависимости от типа
Как заставить шаблон различать тип переменной которую ему передают? Пробую определить через type_traits, но не выходит - не компилируется. Хочу перегрузить operator+= как для разных объектов класса так и для встроенных типов. Вот небольшой пример моего кода:
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
#include <iostream>
#include <type_traits>
 
template<typename T>
class foo
{
    T m_somevalue;
public:
    foo() : m_somevalue(10) {}
    T get() const {return m_somevalue;}
    void show() const {std::cout<<m_somevalue<<std::endl;}
 
    template<typename U>
    foo& operator+=(const U val) //foo+=foo or foo+=val(int, long, double)
    {
        if (std::is_class<U>::value)
        {
            m_somevalue+=val.get();
            return *this;
        }
        else
        {
            m_somevalue+=val;
            return *this;
        }
    }
};
 
 
int main()
{
    foo<int> a, b;  
    foo<long> d;
    a.show();       //10
    b.show();       //10
    d.show();       //10
    (a+=b).show();  
    (a+=d).show();  
    (a+=5).show();
 
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru