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

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

Войти
Регистрация
Восстановить пароль
 
winnisp
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 25
#1

Использование операторов шаблона класса - C++

18.01.2013, 15:22. Просмотров 223. Ответов 2
Метки нет (Все метки)

Приветствую, уважаемые форумчане. Я - начинающий программист, во время чтения книги Ст. Липмана "Язык программирования вводный курс" решил написать программку, для которой понадобилось создать шаблон структурки. Появилась проблема с операторами, привожу упрощенную схему структуры:

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
#include <iostream>
template<typename T>
// Определение структрурки CC
struct CC
{
    CC<T>& operator = ( const CC<T> &rp );
    CC(T c=0): cont(c) { }
    T cont;
};
// Используемые операторы
// оператор суммы
template<typename T>
CC<T>& operator + ( const CC<T> &lpr, const CC<T> &rpr )
{
    CC<T> ret;
    ret.cont=lpr.cont+rpr.cont;
    return ret;
};
// оператор присвоения
template<typename T>
CC<T>& CC<T>::operator = (const CC<T> &rpr )
{
    this->cont=rpr.cont;
    return *this;
};
// оператор умножения на константу
template<typename T>
CC<T>& operator * ( const CC<T> &lpr, const double c)
{
    CC<T> ret;
    ret.cont=lpr.cont*c;
    return ret;
};
// умонжение константы на число
template<typename T>
CC<T>& operator * ( const double c, const CC<T> &lpr )
{
    CC<T> ret;
    ret.cont=lpr.cont*c;
    return ret;
};
 
void main()
{
    CC<int> a(3),b(2),c;
    c=2*a*2;
    std::cout<<c.cont;
    system("pause");
}
Если делать c=2*a то в итоге получаем ответ 6, если использовать оператор c=a*2, то также получаем в ответе 6, а вот если выполнять как показано выше, то в ответе получаем 0, причем при пошаговой отладке в VS 2010, при выполнении оператора умножения константы на объект получаем объект СС со значением cont=6, а при выполнении оператора умножения объекта на константу происходит обнуление параметра объекта rpr, при определении объекта ret.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2013, 15:22     Использование операторов шаблона класса
Посмотрите здесь:

Использование шаблона класса - C++
Здравствуйте. у меня возникла проблемка при использовании шаблона класса. template &lt;class X&gt; class CArray { public: X *myarray; ...

Создание шаблона с перегрузкой стандартных операторов - C++
Здравствуйте уважаемые! Уже несколько часов подряд бьюсь над задачей вроде бы очень простой, но видимо что-то упускаю. Задача...

Использование операторов цикла - C++
Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x), используя ее разложение в степенной ряд в двух случаях: ...

Использование операторов цикла - C++
Вычислить значения функции y=4*x*x*x-2*x*x+5,для значений x , изменяющихся от -3 до 1 , с шагом 0.1 , Спасибо заранее . Помогите плз , я...

Использование шаблона функции - C++
Есть рабочая програма, но преподаватель попросил её немного упростить. Прошу помочь. Всё приведу ниже. Задание: Осуществить циклический...

Использование шаблона типов - C++
Прочитал про шаблоны типов, интересный и полезный инструмент, но есть несколько вопросов о кухне данного инструмента. Есть класс...

Использование шаблона template - C++
Попытался использовать шаблон template в функции, но при смене типа переменной появляются проблемы с остальными функциями. Можно ли...

Использование нескольких операторов в теле if - C++
Нужно определение и пример фрагмента (структура нескольких операторов в теле if) помогите

Задача на использование операторов цикла - C++
Написать программу на Turbo C++

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FreeMinder
36 / 36 / 2
Регистрация: 29.08.2012
Сообщений: 59
18.01.2013, 15:54     Использование операторов шаблона класса #2
Вы возвращаете из функций временный объект по ссылке
winnisp
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 25
18.01.2013, 16:04  [ТС]     Использование операторов шаблона класса #3
Да уж, глупая ошибка, надо повнимательнее перечитать ссылки и указатели...
Ответ Создать тему
Опции темы

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