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

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

Войти
Регистрация
Восстановить пароль
 
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

Перегрузка оератора = в шаблоне - C++

04.03.2013, 02:29. Просмотров 325. Ответов 2
Метки нет (Все метки)

Есть шаблон:
C++
1
2
template <typename V>
class Vector;
и есть функця:
C++
1
V operator=(const Vector &);
пробую перегрузить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template <typename V>
V Vector<V>::operator=(const Vector& rhs)
{
    // fix
    if (this == &rhs)
        return *this;
    if (vec_ptr)
        delete [] vec_ptr;
    vec_size = rhs.size();
    vec_ptr = new V[vec_size];
    cpy_from_to(vec_ptr, rhs.vec_ptr, vec_size);
    return *this;
}
Bash
1
2
3
4
5
6
7
ilyuha21st@coldshoot ~/projects $ g++ -Wall -W -pedantic main.cpp -o prog
main.cpp: In member function ‘V Vector<V>::operator=(const Vector<V>&) [with V = char, Vector<V> = Vector<char>]’:
main.cpp:172:16:   instantiated from here
main.cpp:98:17: error: cannot convert ‘Vector<char>’ to ‘char’ in return
main.cpp:104:13: error: cannot convert ‘Vector<char>’ to ‘char’ in return
main.cpp:105:1: warning: control reaches end of non-void function [-Wreturn-type]
ilyuha21st@coldshoot ~/projects $
Если перегружать через функцию возращающую void тогда всё ок, но ведь смысл тогда от присвоения теряется. Подскажите пожалуйста, как правильно нужно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2013, 02:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оератора = в шаблоне (C++):

Перегрузка << в шаблоне - C++
Ругается когда перегружаю template &lt; class T &gt; ostream &amp;operator&lt;&lt;(ostream &amp;out, const ArrayList&lt;T&gt; &amp;d); Ошибки VS2010: ...

Перегрузка оператора в шаблоне - C++
Здравствуйте! подскажите пожалуйста как перегрузить оператор &lt;!(думаю и-за этого вылетает ошибка). вот код #include &lt;iostream&gt; ...

Перегрузка оператора в шаблоне - C++
Добрый день, не могу сделать данную штуку. Есть у меня шаблон вектор(не из библиотеки), и не могу перегрузить для него операторы. Не...

перегрузка оператора в шаблоне - C++
Здравствуйте. Подскажите пожалуйста, как мне реализовать перегрузку оператора сравнения в следующем случае: template&lt;class L&gt;class...

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

Перегрузка операторов в шаблоне класса - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;typeinfo&gt; #include &lt;windows.h&gt; using namespace std; template &lt;class Type1,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.03.2013, 02:32 #2
возвращать лучше не объект, а ссылку на самого себя.
тип возвращаемого значения не V, а Vector<V>
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
04.03.2013, 03:14  [ТС] #3
разобрался с синтаксисом:
template <typename V>
C++
1
2
3
4
Vector<V>& Vector<V>::operator=(const Vector& rhs)
{
      // some code
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 03:14
Привет! Вот еще темы с ответами:

Перегрузка << в шаблоне класса List - C++
Сап. Написал класс, реализующий работу односвязного списка. Для вывода решил использовать перегрузку &lt;&lt; , но тут и начались проблемы (код...

Перегрузка унарных и бинарных операторов в шаблоне - C++
Доброго времени суток! Недавно столкнулся с проблемой при написании такого шаблона: template &lt;typename T&gt; class CPoint; template...

Перегрузка операций ввода/вывода в шаблоне класса - C++
template &lt;typename T&gt; class Vector { private: T * data; int size; public: Vector(int); friend std::istream &amp;...

Шаблоны и дружественность. Перегрузка оператора << через дружественную функцию в шаблоне - C++
Доброго времени суток, уважаемые форумчане! Есть класс-шаблон, реализующий объект &quot;Матрица&quot;. Для него перегружены некоторые операторы....


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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