Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2012, 15:22   #1
Rayzor
Пользователь
 
Регистрация: 17.07.2010
Сообщений: 19
По умолчанию наследник шаблонного класса

как объявить наследника шаблонного класса, да ещё если он обрамлён собственным пространсвом имён? Вот мой класс:
Код:
namespace my_complex {
template <class T>
class complex
{...};};
Rayzor вне форума Ответить с цитированием
Старый 02.05.2012, 15:35   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
class MyClass: public my_complex::complex<double>
или если наследник тоже шаблонный
Код:
template <class T>
class MyClass: public my_complex::complex<T>
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.05.2012, 16:40   #3
Rayzor
Пользователь
 
Регистрация: 17.07.2010
Сообщений: 19
По умолчанию

спасибо, а не подскажите ещё как вынести функции из такого наследника. У меня такая функция:
Код:
void Sum(MyClass<T> &A, MyClass<T> &B)
{...};
Я в шаблоне оставил
Код:
void Sum(MyClass<T> &, MyClass<T> &)
А в не класса делаю так:
Код:
void MyClass<T>::Sum(MyClass<T> &A, MyClass<T> &B)
{...};
Но чёт не пашет((
Rayzor вне форума Ответить с цитированием
Старый 02.05.2012, 16:44   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ваше вне класса, в отдельном файле?

шаблонные функции/методы нельзя вынести в .cpp .
Код:
template <class T>
void MyClass<T>::Sum(MyClass<T> &A, MyClass<T> &B)
{...};
вроде так, не выносил никогда, ибо не вижу смысла.(или просто MyClass)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.05.2012, 16:49   #5
Rayzor
Пользователь
 
Регистрация: 17.07.2010
Сообщений: 19
По умолчанию

нет не в отдельном файле в том же самом, просто после того, как закрывается фигурная скобка класса, как вы написали - так не пашет: "<T> was not declared in this scope"
Rayzor вне форума Ответить с цитированием
Старый 02.05.2012, 16:51   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы template перед методом(именно перед методом) не забыли?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.05.2012, 17:34   #7
Rayzor
Пользователь
 
Регистрация: 17.07.2010
Сообщений: 19
По умолчанию

да точно, не заметил
Rayzor вне форума Ответить с цитированием
Старый 03.05.2012, 15:49   #8
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
шаблонные функции/методы нельзя вынести в .cpp .
а разве эту проблему не решили в С++ 11?
onewho вне форума Ответить с цитированием
Старый 03.05.2012, 16:42   #9
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
а разве эту проблему не решили в С++ 11?
да вроде наоборот, запретили реализации компиляторов, позволяющие выносить реализацию шаблонов в отдельный класс. как-то так
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 03.05.2012, 16:50   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
а разве эту проблему не решили в С++ 11?
я честно говоря не представляю как можно решить её(хотя вру, представляю, ибо сам же в теме ).
ибо специализацию то вынести можно, а вот без оной...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс наследник JScrollPane Анатоль Общие вопросы по Java, Java SE, Kotlin 1 09.12.2011 14:58
Наследник DateTimePicker'а. Oliveyra Общие вопросы Delphi 1 05.12.2011 00:55
Конструктор шаблонного класса Hemul Общие вопросы C/C++ 1 01.07.2011 20:21
С++ перегрузка операций для шаблонного класса TIN Помощь студентам 7 29.03.2009 15:24
Реализация однонаправленного шаблонного связанного списка Blade Общие вопросы C/C++ 17 28.03.2009 19:59