Использование функций из класса, созданного в качестве шаблона в классе хоста - PullRequest
0 голосов
/ 06 апреля 2019

у меня 3 класса.Первый класс (List) хранит связанный список класса Node, а каждый класс Node имеет указатель на следующий Node и переменную данных T для хранения данных в третьем классе, StudentData.

If fromкласс List, мне нужно было получить доступ к функциям класса StudentData, я, конечно, должен был бы пройти через класс Node, но я не уверен, как это сделать.

Например, если у меня есть функция, которая записывает весь список в файл, обращаясь к элементам следующим образом:

void storeList() {
//create fileObj
Node<T> * temp = pFront;

while (temp != nullptr) {
    fileObj << temp->getData(); //line 121
    temp = temp->getPNext();
}

Как мне получить доступ к перегруженному оператору, как определено в классе StudentData?

template <class T>
class List {
private:
    Node<T> * pFront;
public:
    void storeList();
    //getters and setters

template <class T>
class Node {
private:
    Node<T> * pNext;
    T data;
    //getters and setters

class StudentData {
private:
    int recNum;
    int idNum;
    string first, last;
    //ect
public:
    void exFuncion();
    fstream &operator<< (fstream &out, StudentData data);

Одной из моих идей было сделать что-то вроде этого

void storeList() {
//create fileObj
Node<T> * temp = pFront;

while (temp != nullptr) {
T tempData
tempData = temp->getData();
fileObj << tempData;
    temp = temp->getPNext();
}

, но это, вероятно, излишне.

Если это поможет, я получаю сообщение об ошибке

list.h (121): ошибка C2679: двоичный файл «<<»: не найден оператор, который принимает операнд правой руки>типа 'T' (или нет приемлемого преобразования)

Как попытка преобразовать T в StudentData, но это не имеет большого смысла для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...