|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.11.2010, 19:35 | #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. |
14.11.2010, 19:43 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Код:
|
14.11.2010, 19:45 | #3 |
Пользователь
Регистрация: 20.08.2010
Сообщений: 37
|
оператор+ перегружена как дружественная
|
14.11.2010, 19:48 | #4 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Во-первых, зачем вам две реализации оператора +?
Если как член класса, то как-то так: Код:
Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Последний раз редактировалось Syuf; 14.11.2010 в 19:50. |
14.11.2010, 20:04 | #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) Код:
|
14.11.2010, 20:53 | #6 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Логично, вы вызываете его для разных типов: Stack<int> + Stack<char>!
Если вам уж это черезчур надо, то следует делать уже явные специализации классов (после обычных): Код:
Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Последний раз редактировалось Syuf; 14.11.2010 в 20:57. |
14.11.2010, 20:55 | #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 |