您的位置:首页 > 编程语言 > C语言/C++

C++模板类重载"<<"未定义错误

2016-02-23 21:33 288 查看
在使用C++的模板类进行编程的时候,重载"<<"运算符时,如果定义不当,会出现未定义的情况,错误为LNK2019。



这个问题的原因是由于C++的模板编译机制造成的,解决问题的方式是在类中声明<<运算符时,需要在运算符和参数之间的位置,添加类似<T>标识,具体如下:

template<typename T_Vertex, typename T_Edge>

class CMatrixGraph

{
friend ostream & operator<<
<T_Vertex, T_Edge> (ostream &os, CMatrixGraph<T_Vertex, T_Edge> &g);

.......

}

template<typename T_Vertex, typename T_Edge>

ostream &operator<<(ostream &os, CMatrixGraph<T_Vertex, T_Edge> &g)

{
int nVertexNum = g.GetVertexNum();

for (int i = 0; i < nVertexNum; ++i)
{
for (int j = 0; j < nVertexNum; ++j)
{
os << g.GetEdgeAt(i, j) << ' ';
}
os << endl;
}
return os;

}

重新编译,错误消失。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: