Выражение должно иметь тип указателя или дескриптора
Пишу класс однонаправленного списка при помощи шаблонов. Метод TList::Print() мне необходимо переписывать для каждого типа отдельно.
Код:
template <typename T>
struct Node
{
T data;
Node* next;
};
template <typename T>
class TList
{
public:
TList();
~TList();
void Add( T data );
T* GetI(unsigned int i);
void DeleteElement(Node<T>* el, unsigned int n);
void Print();
private:
Node<T>* Head;
};
Для случая когда у меня элементом списка является экземпляр класса Ttarget:
void TList<TTarget>::Print()
{
Node<TTarget>* tmp = Head;
while (tmp != nullptr)
{
cout << "X: " << tmp->data->state_vector[0] << " Y: " << tmp->data->state_vector[1] << endl;
//,,,,,,,,,,
}
return;
}
В выражении tmp->data->state_vector[0] требуется тип указателя и дескриптора. Что я должен написать, если tmp имеет тип Node<TTarget>* , tmp->data имеет TTarget*, state_vector имеет double*?