template błąd przy Node*<T> newNode = new <T> Node();

0
#include <iostream>

using namespace std;

template <typename T>
struct Node
{
    T data;
    Node <T> *next;
};

template <typename T>
class LinkedList
{
public:
    Node <T> *head;

    LinkedList()
    {
        head = NULL;
    }

    void Insert(T newElement, int position)
    {
        Node*<T> newNode = new <T> Node();
        newNode->data = newElement;
        newNode->next = NULL;

        if (position < 1)
        {
            cout << "\nposition should be >= 1.";
        }
        else if (position == 1)
        {
            newNode->next = head;
            head = newNode;
        }
        else
        {

            Node <T> *temp = head;
            for (int i = 1; i < position - 1; i++)
            {
                if (temp != NULL)
                {
                    temp = temp->next;
                }
            }

            if (temp != NULL)
            {
                newNode->next = temp->next;
                temp->next = newNode;
            }
            else
            {
                cout << "\nThe previous node is null.";
            }
        }
    }
    
int main()
{
    LinkedList <int> MyList;

    MyList.Insert(2312, 1);
    MyList.print();
}

Może mi ktoś wyjaśnić dlaczego w linice Node*<T> newNode = new <T> Node(); mam błąd odnośnie brakującego argumentu template po znaku '*' ?
1
template<typename T> struct Node
{
    T data;
    Node *next; // tu wiadomo że to z tej Node<T>
    
};
0
_13th_Dragon napisał(a):
template<typename T> struct Node
{
    T data;
    Node *next; // tu wiadomo że to z tej Node<T>
    
};

I tak samo w funkcjach nie trzeba dawać Node <T> tylko wystarczy dać samo Node ?

2
Baxing napisał(a):

I tak samo w funkcjach nie trzeba dawać Node <T> tylko wystarczy dać samo Node ?

W funkcjach oraz metodach innych klas już musisz podać.
Tak a propos: Node<T> *n=new Node<T>();
Oraz próbuj używać analogii:
Node <T> *head; - jeżeli na to nie krzyczy to czemu dalej kombinujesz zamiast użyć to co sprawdzone:
Node*<T> newNode = new <T> Node();

1 użytkowników online, w tym zalogowanych: 0, gości: 1