Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 奇怪的类重新定义错误_C++_Templates - Fatal编程技术网

C++ 奇怪的类重新定义错误

C++ 奇怪的类重新定义错误,c++,templates,C++,Templates,我有一个奇怪的错误,说我的类被重新定义了,源于我的节点类中的友元声明。以下是我当前的代码: template <class T> class Node { private: T val; Node<T> * next; public: friend class OList; }; 模板 类节点{ 私人: T值; 节点*下一步; 公众: 友邦主义者; }; 我的其他班级: template <class T> class O

我有一个奇怪的错误,说我的类被重新定义了,源于我的节点类中的友元声明。以下是我当前的代码:

template <class T>
class Node {

private:

    T val;
    Node<T> * next;

public:

    friend class OList;

};
模板
类节点{
私人:
T值;
节点*下一步;
公众:
友邦主义者;
};
我的其他班级:

template <class T>
class OList {  ------> Error here

private:

    Node<T> * head;
    int size;

public:

    OList();
    OList(const OList<T> &b);
    ~OList();

    clear();
    int size();
    T tGet(int input);
    int count(T input);
    insert (T input);
    remove (T input);
    uniquify(T input);
    Node<T> * returnHead();

};

// Constructs empty list
template <class T>
OList<T>::OList() { ---> Error here
    head = NULL;
    size = 0;
}
模板
类OList{----------->此处有错误
私人:
节点*头;
整数大小;
公众:
寡头();
警察局(警察局);
~OList();
清除();
int size();
T tGet(int输入);
整数计数(T输入);
插入(T输入);
删除(T输入);
统一(T输入);
节点*returnHead();
};
//构造空列表
模板
OList::OList(){->此处有错误
head=NULL;
尺寸=0;
}

OList
不是一个类,它是一个类模板。您可以将模板的所有专门化交朋友:

template <typename> friend class OList;

此外,友元声明不能引用部分专门化


来源:

谢谢。然而,这给了我一个非模板类显式专门化的错误。感谢您在修复了其他一些问题后,这项工作得以完成。
friend class OList<T>;
template <typename> class OList;