我有3节课。第一个类(列表)存储Node类的链接列表,每个Node类都有一个指向下一个Node的指针和一个T数据变量,用于将数据存储在第三类StudentData中。
如果从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,但这对我来说没有多大意义。