Мне было поручено превратить мой класс связанного списка в шаблон, и я столкнулся с некоторой путаницей.Мне нужно отправить его как один .h
файл.
Когда я пытаюсь собрать, я получаю ошибки при каждом упоминании LLnode
, fwdPtr
и theData
.Это каждый элемент структуры, поэтому я сделал что-то очень неправильное.Кроме того, само определение struct
помечено syntax error
template <class V>
class LL
{
private:
LLnode * header;
struct <V> LLnode;
{
LLnode * fwdPtr; // has a pointer member
V theData; // the data within the node
};
public:
LL()
{
header = nullptr;
}
void push_front(string data)
{
LLnode * new_node;
new_node = new LLnode;
new_node -> theData = data;
if (header == nullptr)
{
header = new_node;
new_node -> fwdPtr = nullptr;
}
else
{
LLnode * temp;
temp = header;
header = new_node;
new_node -> fwdPtr = temp;
}
return;
}
.... more functions below ....
. В main()
, на котором будет проверяться функция, будет создан новый связанный список с приведением <string>
как тип.Вот почему я переместил struct LLnode
в секцию private
члена class LL
.По этой же причине я использую V
по всей структуре.Поскольку это приведение должно достигать самой структуры, поэтому, когда я динамически распределяю память для узлов, она будет знать, что она будет принимать string
data
. Я знаю, что мне нужно будет изменить определения функций, чтобы они включали V
ииспользуйте V
повсюду с некоторыми переменными.Но я не понимаю, где и почему.Я запутался в том, как классы шаблона связаны со структурами указателей и программистов.Я понимаю простые примеры шаблонных классов / функций в моем учебнике, но я здесь потерян.
Заранее спасибо за любую помощь!
РЕДАКТИРОВАТЬ: Вот сообщения об ошибках, которые я получаю (в соответствии с просьбой)
../LL_template_class.h:23:3: error: unknown type name 'LLnode'
LLnode * header;
^
../LL_template_class.h:24:3: error: declaration of anonymous struct must be a definition
struct <V> LLnode;
^
../LL_template_class.h:24:3: warning: declaration does not declare anything [-Wmissing-declarations]
../LL_template_class.h:25:3: error: expected member name or ';' after declaration specifiers
{
^
../LL_template_class.h:37:4: error: unknown type name 'LLnode'
LLnode * new_node;
^
../LL_template_class.h:38:19: error: unknown type name 'LLnode'
new_node = new LLnode;
^
../LL_template_class.h:48:5: error: unknown type name 'LLnode'
LLnode * temp;
Но, как я уже сказал, я получаю can not resolve
ошибки во всех упоминаниях моих struc LLnode
элементов