как подружиться с шаблоном класса. Ошибка "is not a template type"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.82] |
|
|
как подружиться с шаблоном класса. Ошибка "is not a template type"
|
Сообщ.
#1
,
|
|
|
|
Здравствуйте!
Сижу мудрю. И кажись намудрил. Код вроде бы простой, а компилер ругаеться. Цитата error: `list_string' is not a template type Подскажите, пожалуйста, где я тупанул?! |
|
Сообщ.
#2
,
|
|
|
|
Ты ведь не h-файл компилируешь, а срр? Приводи и его код. Только не лепи свои портянки с закомментированным кодом во весь файл, а выкинь всё лишнее и приведи минимальный код, воспроизводящий ошибку.
Кстати, пока это делаешь, обычно сам находишь, что не так. Добавлено Как правильно задавать вопросы |
|
Сообщ.
#3
,
|
|
|
|
Я нашол проблемное место.
Но справиться с ним не могу. Ошибка возникает, когда я делаю шаблонный класс другом. Вот минимальный код, доводящий до ошибки. ![]() ![]() // дочерний класс class child { private: // это и приводит к ошибке friend class base; child* prev; child* next; }; // шаблон базового класса template< class T > class base { public: T* add() { T* c = new T(); c->prev = 0; c->next = 0; return c; } }; // инстанцируем template class base< child >; typedef base<child> b; int main() { return 0; } Наверое, надо, как-то не так френдить. Он ведь просит параметры шаблона. Но, я даже не представляю, откуда их взять! Предполагаеться, что класс child должен быть унаследован и стать базовым классом. И в шаблон будет передаваться уже именно тот новый класс. Добавлено О! Поздравьте меня. Я догадался! ![]() ![]() template< class T > friend class base; И ведь так элементарно! |