![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.08.2010
Сообщений: 37
|
![]()
Добрый вечер, проблема с перегрузкой оператора + в шаблоне класса,не компилиться программа выходит куча ошибок пробывал разные варианты может кто подскажет как решить проблему.
Задание: Разработать шаблонный класс Стек. Предусмотреть вариант хранения в стеке строк символов. Перегрузить операции +, -. *. В классе должен быть конструктор. Предусмотреть член-функцию для печати элементов класса. ошибки: 1>d:\vs\shablon\shablon\shablon.cpp (123) : error C2804: binary 'operator +' has too many parameters pp(127) : error C2079: 'operator +' uses undefined class 'Stack' 1>d:\vs\shablon\shablon\shablon.cpp (128) : error C2133: 'temp' : unknown size 1>d:\vs\shablon\shablon\shablon.cpp (128) : error C2512: 'Stack' : no appropriate default constructor available 1>d:\vs\shablon\shablon\shablon.cpp (129) : error C2110: '+' : cannot add two pointers 1>d:\vs\shablon\shablon\shablon.cpp (130) : error C2660: 'Stack<T>::Stack' : function does not take 1 arguments Код:
Последний раз редактировалось Freddi Krjuger; 14.11.2010 в 19:45. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]() Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 20.08.2010
Сообщений: 37
|
![]()
оператор+ перегружена как дружественная
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
![]()
Во-первых, зачем вам две реализации оператора +?
Если как член класса, то как-то так: Код:
Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Последний раз редактировалось Syuf; 14.11.2010 в 19:50. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 20.08.2010
Сообщений: 37
|
![]()
работает спасибо),даже не думал о таком варианте.Теперь другая ошибка=( как только пытаюсь использовать оператор выходит ошибка
1>d:\vs\shablon\shablon\shablon.cpp (193) : error C2679: binary '+' : no operator found which takes a right-hand operand of type 'Stack<T>' (or there is no acceptable conversion) Код:
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
![]()
Логично, вы вызываете его для разных типов: Stack<int> + Stack<char>!
Если вам уж это черезчур надо, то следует делать уже явные специализации классов (после обычных): Код:
Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Последний раз редактировалось Syuf; 14.11.2010 в 20:57. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 20.08.2010
Сообщений: 37
|
![]()
спасибо большое попробую.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шаблоны классов | __Demon__ | C++ Builder | 11 | 03.03.2010 01:04 |
Шаблоны С++ | Secc | Помощь студентам | 4 | 27.12.2009 17:35 |
Шаблоны C++ | Viamy | Помощь студентам | 0 | 27.12.2009 16:10 |
Шаблоны, Си++ | Нataша | Помощь студентам | 1 | 11.12.2009 01:35 |
Шаблоны | bondik | Общие вопросы C/C++ | 10 | 04.05.2008 09:50 |