Ошибка при создании класса с шаблонными классами

У меня проблемы с выяснением, что не так с моей программой. Я построил его с помощью объявлений классов и объявлений функций-членов в заголовочном файле, определений функций-членов в одном файле .cpp, а затем у меня есть программа основного драйвера в main.cpp. Я поместил их все в один файл на ideone, чтобы я мог разместить программу здесь:

http://ideone.com/PPZMuJ

Ошибка, показанная на ideone, действительно является ошибкой, которую показывает моя IDE при сборке. Может кто-то указать, что я делаю не так?

Ошибка:

prog.cpp: In instantiation of ‘IntDLLNode<int>’:
prog.cpp:56:   instantiated from ‘void IntDLList<T>::addToDLLHead(const T&) [with T = int]’
prog.cpp:215:   instantiated from here
prog.cpp:8: error: template argument required for ‘struct IntDLList’

Line 56: head = new IntDLLNode<T>(el,head,NULL);
Line 215: dll.addToDLLHead(numero);
Line 8: class IntDLLNode    {

Вы можете игнорировать предложение try / catch, я еще не закончил работу над этой частью — я просто пытаюсь обойти текущую ошибку.

0

Решение

Проблема в декларации друга:

template <class T>
class IntDLLNode    {
friend class IntDLList;
// rest of IntDLLNode here
};

Здесь вы объявляете не шаблон class IntDLList быть другом. Позже вы объявляете шаблон класс с тем же именем; но в отличии от ожидаемого он не станет другом IntDLLNode,

Чтобы это исправить, укажите, что класс Friend является шаблоном:

template <class U> class IntDLList;

template <class T>
class IntDLLNode    {
friend class IntDLList<T>;
// rest of IntDLLNode here
};
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]