使用来自在宿主类中作为模板创建的类的函数

时间:2019-04-06 20:10:43

标签: c++ function class templates

我有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,但这对我来说没有多大意义。

0 个答案:

没有答案