у меня 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, но это не имеет большого смысла для меня.