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

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

Восстановить пароль Регистрация
 
s050102326
0 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 4
04.01.2012, 16:30     Правильная перезагрузка оператора ''='' #1
совсем недавно начал работать с шаблонами, и возникла такая проблема:
имеется шаблонный класс - вектор:

Код
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++
Придумайте простую программу с использованием условного оператора IF и оператора switch 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     Правильная перезагрузка оператора ''=''
Ответ Создать тему
Опции темы

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