1 / 1 / 0
Регистрация: 24.07.2007
Сообщений: 178
|
|||||||||||
1 | |||||||||||
Ошибки: 1) use of class template requires template argument list 2) 'T' : undeclared identifier15.05.2009, 20:49. Показов 12290. Ответов 7
Метки нет Все метки)
(
Решил подправить свой класс с использованием шаблонов, но столкнулся со следующим косяком.
Если я прописываю тело функций внутри описания класса - на месте - то все нормально. Если же выношу непосредственный код отдельно, но появляются ошибки типа 1) use of class template requires template argument list 2) 'T' : undeclared identifier Все-таки хочется в описании класса оставить только прототип функций - это же возможно. Помогите, кто знает, а то я уже все что можно испробовал. Вот примеры таких классов - у первого весь код внутри и все работает, у второго - отдельно, и возникают ошибки.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
15.05.2009, 20:49 | |
Ответы с готовыми решениями:
7
Шаблоны: ошибки: requires template argument list или undeclared identifier 'MyQueue' : use of class template requires template argument list Friend template class with template class argument
|
15.05.2009, 21:37 | 2 |
Описания функций должны начинаться так:
Код
template <class T> T my3<T>::Get3x()
0
|
1 / 1 / 0
Регистрация: 24.07.2007
Сообщений: 178
|
|
15.05.2009, 21:49 [ТС] | 3 |
Спасибо за помощь, palva.
Теперь заработало.
0
|
1 / 1 / 0
Регистрация: 24.07.2007
Сообщений: 178
|
||||||
16.05.2009, 13:47 [ТС] | 4 | |||||
Продолжая разговор, наткнулся на следующий косяк, который не знаю, как исправить.
Есть два класса - c1 и c2. Второй (c2) наследуется от c1. Чтобы классу c2 были доступны private члены класса c1, объявляю для c1 друга - c2. И компилятор вываливает кучу ошибок. Если строчку friend class c2; закоментировать, то все нормально. Манипуляции над этой строчкой результатов не дали, типа написать friend class c2 <T, T2>; friend class c2 <class T, class T2>; дает много других ошибок, которые тоже не понятно как исправить. Ниже привожу описанный код. Скажите, что делать, а то я, видимо, в тупик зашел.
0
|
16.05.2009, 15:45 | 5 |
После friend class вы должны указать имя класса, но c2 это не имя класса, это имя шаблона. А в качестве имени класса нужно использовать c2<...> Далее, если вы в описании класса упоминаете другой класс, то он должен быть либо определен ранее в тексте модуля, либо описан как класс. Если пойти по второму пути, то перед определением шаблона класса c1 нужно вставить
Код
template<class T, class T2> class c2; Код
friend class c2<T, T2>; Код
friend class c2<class Q, class Q2>; Код
class Q; class Q2; Код
friend class c2<Q, Q2>;
0
|
1 / 1 / 0
Регистрация: 24.07.2007
Сообщений: 178
|
||||||
17.05.2009, 18:01 [ТС] | 6 | |||||
Вот, что я хочу (см. код ниже).
Есть класс без шаблонов (c2), который имеет друга - класс c1 <class T>, а также private-переменную intPr, которая равняется 7. В классе c1 есть public-функция GetPr, которая должна возвращать значение intPr через созданный экземпляр класса С2 - objC2. Заранее благодарен за помощь.
0
|
17.05.2009, 22:48 | 7 | ||||||||||
Что-то у меня такое не получается. Можно, конечно, начать описание класса c2 так:
0
|
1 / 1 / 0
Регистрация: 24.07.2007
Сообщений: 178
|
|
19.05.2009, 18:57 [ТС] | 8 |
Спасибо, palva еще раз.
Теперь без ошибок. Правда, пришлось, внедрить шаблон для одного из классов, которому они ни к чему, но это не так важно.
0
|
19.05.2009, 18:57 | |
Помогаю со студенческими работами здесь
8
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |