ошибка: аргумент шаблона необходим для 'struct List' - PullRequest
3 голосов
/ 24 марта 2012

Я пытаюсь создать свой собственный шаблон для класса List в качестве учебного упражнения.У меня были некоторые проблемы с синтаксисом шаблона, и теперь я получаю следующее сообщение об ошибке ..

main.cpp|Line 8|instantiated from here
error: template argument required for 'struct List'
In function 'int main()':
...

Насколько я могу судить, я ничего не использую, но это мой первый разработаю с шаблонами и буду очень признателен за то, что кто-то просматривает и сообщает мне, что я делаю не так.

Main.hpp

#include <iostream>
#include "List.hpp"
int main()
{
   List<int> testl;
      //test
      testl.PushFront();
      testl.GetHead().SetData(7); //Error thrown here??
      std::cout << test1.GetHead().GetData() << std::endl;

   return 0;
}

1 Ответ

6 голосов
/ 24 марта 2012

List - это шаблон класса, поэтому вы должны объявить его в объявлении своего друга

template<typename ListType>
friend class List;

Если вы хотите, чтобы List<NodeType> был другом, вам нужно сообщить ему, чтоаргумент шаблона, поэтому объявление друга становится

friend class List<NodeType>;

. Чтобы это работало, нужно знать, что List существует как шаблон класса, поэтому вам нужно объявить его вперед в начале Node.hpp:

template<typename ListType>
class List;
...