3 / 3 / 2
Регистрация: 05.01.2014
Сообщений: 16
|
||||||||||||||||
1 | ||||||||||||||||
Friend template class with template class argument17.03.2017, 20:57. Показов 1184. Ответов 10
Помогите подружить 2 класса:
Имеется класс Student:
Все разделено на файлы, объявления в хедерах, каждый в своем. Конструкторы каждого класса и их функции в отдельных файлах.
0
|
|
17.03.2017, 20:57 | |
Ответы с готовыми решениями:
10
Ошибки: 1) use of class template requires template argument list 2) 'T' : undeclared identifier 'MyQueue' : use of class template requires template argument list
|
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
|
|
17.03.2017, 22:37 | 2 |
похоже забыли class перед Faculties:
template <template <class> class T> class Faculties; http://cpp.sh/53xc
0
|
3 / 3 / 2
Регистрация: 05.01.2014
Сообщений: 16
|
|
17.03.2017, 23:08 [ТС] | 3 |
Действительно пропустил, но ошибка осталась.
Сейчас скину весь проект
0
|
3 / 3 / 2
Регистрация: 05.01.2014
Сообщений: 16
|
|
17.03.2017, 23:13 [ТС] | 4 |
Проект xCode
Буду рад услышать критику и рекомендации по написанию кода. Плюс хотелось бы переезжать на современный стандарт, где это можно. Что порекомендуете? Еще преподаватель говорила про умные указатели - не особо понимаю зачем и где здесь их стоит применять. Спасибо ![]()
0
|
Вездепух
![]() ![]() 10820 / 5841 / 1585
Регистрация: 18.10.2014
Сообщений: 14,497
|
||||||
17.03.2017, 23:48 | 5 | |||||
Какая именно ошибка?
Вот тут написана ерунда
class _T - это предварительное объявление некоего class _T , которого у вас в программе нет вообще.Мне в упор не ясно, зачем ваш class Faculties параметризован именно шаблоном, а не обычным типом. Зачем? Шаблоны нужны для того, чтобы их потом специализировать с разными аргументами. У вас в реализации Faculties шаблон T нигде не специализируется с разными аргументами. Так зачем тогда T сделан шаблоном, а не просто типом?
0
|
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
|
|
17.03.2017, 23:56 | 6 |
посмотрел в код. какой-то адский коктейль.
самая безобидная ошибка: методы шаблонов реализуйте в hpp файлах, а не в cpp. Далее, классы студентов, факультетов чем-то напоминают шаблонные списки, хотя таковыми быть не должны согласно здравому смыслу. Если вам надо написать шаблонный класс списка - то пишите шаблонный класс списка. И параметризируйте его студентами там или факультетами или еще чем хотите. Здесь есть тема с решениями всяких задачек, в том числе и шаблонные списки. Доводить до компилябельности и до работоспособности то в том виде, в каком оно сейчас нет смысла.
0
|
Вездепух
![]() ![]() 10820 / 5841 / 1585
Регистрация: 18.10.2014
Сообщений: 14,497
|
|
17.03.2017, 23:58 | 7 |
Автор, очевидно, в курсе этого момента, ибо он включает
.cpp файлы с реализацией шаблона в другие .cpp файлы там, где это нужно. Т.е. ошибки тут нет. Практика нормальная, но вот давать таким файлам расширение .cpp - не самая лучшая идея.Циркулярное включение заголовков в коде, однако, присутствует. Зачем - не ясно.
0
|
3 / 3 / 2
Регистрация: 05.01.2014
Сообщений: 16
|
|
18.03.2017, 13:52 [ТС] | 8 |
Классы шаблонные, потому что преподаватель так хочет, это курсач. Сказала, чтобы в шаблоны передавались вложенные классы, т.е Student->Faculty->Faculties.
Student - класс, в котором хранится информация о студенте. Faculty - класс, в котором хранится список студентов. Faculties - класс, в котором хранится список факультетов.
0
|
3 / 3 / 2
Регистрация: 05.01.2014
Сообщений: 16
|
|
18.03.2017, 14:36 [ТС] | 9 |
По поводу компиляберного кода, то, если не использовать класс Faculties, то все работает. Приложил
0
|
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
|
||||||
18.03.2017, 19:15 | 10 | |||||
или вы неправильно поняли препода, или ваш препод идиот. потакать идиотам - сомнительное удовольствие. из описания пока что понятно что единственное место для шаблонов - сделать шаблонный список аля std::list и использовать как-то так:
0
|
Вездепух
![]() ![]() 10820 / 5841 / 1585
Регистрация: 18.10.2014
Сообщений: 14,497
|
|
18.03.2017, 21:53 | 11 |
Прекрасно. Вот у вас в шаблон
Faculty передается класс. А вот в шаблон Faculties передается шаблон. Почему вдруг шаблон, а не класс, как в Faculty ?
0
|
18.03.2017, 21:53 | |
Помогаю со студенческими работами здесь
11
Template class template <class T>
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |