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

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

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

Правильная перезагрузка оператора ''='' - C++

04.01.2012, 16:30. Просмотров 964. Ответов 2
Метки нет (Все метки)

совсем недавно начал работать с шаблонами, и возникла такая проблема:
имеется шаблонный класс - вектор:

Код
template<class T> class cvector
{private:
T   *data;
int size;
public:
...    
cvector& operator=(const cvector &C){
if(this==&C)return *this;
delete[] data;
data=new T[size=C.size];
for(int i=0;i<size;i++)data[i]=C.data[i];
return *this;};
...};
как правильно перегрузить оператор ''='', чтобы такой код работал:

Код
cvector<double> a(2);
cvector<int> b(2);
a=b;
заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2012, 16:30     Правильная перезагрузка оператора ''=''
Посмотрите здесь:

C++ Правильная дата
Правильная реализация в цикле C++
Правильная скобочная последовательность C++
перезагрузка оператора равно C++
Правильная очистка памяти C++
C++ Правильная линковка библиотек
C++ Правильная инициализация ?
C++ Классы (константный метод и перезагрузка оператора равно)
C++ Правильная ли программа?
Перезагрузка оператора "=" для двух классов C++
Правильная скобочная последовательность C++
C++ Правильная компиляция

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
(Phantom)
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 86
05.01.2012, 12:16     Правильная перезагрузка оператора ''='' #2
Зделать operator= тоже шаблоном.

template<class T, class T1>
cvector<T>& cvector<T>::operator=(class cvector<T1> &vector )
{
...
}

PS: Компилятора под рукой нет. Но идея думаю понятна.
s050102326
0 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 4
05.01.2012, 17:52  [ТС]     Правильная перезагрузка оператора ''='' #3
Спасибо!!!
Реализация оказалась немного не такой (заморочки какие-то, вместо
Код
template<class T, class T1>
надо писать
Код
template<class T> template<class T1>
), но идея была верна.

Если интересно:
"C++ Templates: The Complete Guide", By David Vandevoorde, chapter 5.3: Member templates.
скачать можно здесь:
http://www.winux.net.ru/lofiversion/index.php/f11.html/lofiversion/t4280.html
(CHM, 700Kb)
Yandex
Объявления
05.01.2012, 17:52     Правильная перезагрузка оператора ''=''
Ответ Создать тему
Опции темы

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