奇怪的类重新定义错误
Weird Class Redefinition Error
我有一个奇怪的错误,说我的类正在被重新定义,这源于我的Node类中友元的声明。这是我当前的代码:
template <class T>
class Node {
private:
T val;
Node<T> * next;
public:
friend class OList;
};
我的其他班级:
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
不是类,它是类模板。你可以朋友的模板的所有专业:
template <typename> friend class OList;
或朋友一个特定的专业:
friend class OList<T>;
这将需要已经声明CCD_ 2。在定义Node
:之前提出正向声明
template <typename> class OList;
此外,友元声明不能引用部分专门化。
来源:https://en.cppreference.com/w/cpp/language/friend
相关文章:
- 使用命名空间时出现多个定义错误
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 链接阶段出现多重定义错误
- 避免模板类中的重定义错误
- 即使我没有包含多个文件,C++中的多个定义错误
- 跨多个类的全局变量而不会出现重定义错误?
- 尝试运行 wasm 函数时出现模块未定义错误
- C++ 预期的左大括号以及重定义错误
- C++:成员的越界声明必须是纯虚函数的定义错误
- c++中数组的未定义错误
- Visual C:模板类中的自定义错误消息
- 为什么C++模板不会导致多个定义错误?
- 只有一个定义/声明时标头声明变量的多堆定义错误
- C++ 在多个其他类中使用单个类 - 编译时出现多个定义错误
- 基类未定义.错误 C2504
- Q 斯坦达项重定义错误
- 可视化C++中的结构定义错误
- VC++ C2011 重定义错误 - 未使用的头文件