如何正确重载<操作符的ostream?我正在用C+为矩阵操作编写一个小的矩阵库。然而,我的编译器抱怨说,以前它没有。这段代码在货架上放置了6个月,在此期间,我将我的计算机从Debian蚀刻升级到Lenny(g+(Debian 4.3.2-1.1)4.3.2),但是在具有相同g+的Ubuntu系统上,我遇到了同样的问题。下面是我矩阵类的相关部分:namespace Math{
class Matrix
{
public:
[...]
friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix);
}}和“执行”:using namespace Math;std::ostream& Matrix::operator <<(std::ostream& stream, const Matrix& matrix) {
[...]}这是编译器给出的错误:矩阵cpp:459:错误:‘std:ostream&Math:Matrix:运算符<(std:ostream&,Const Math:Matrix&)’必须使用一个参数我对这个错误感到有点困惑,但是我的C+在做了6个月的大量Java之后又有点生疏了。*-)
3 回答
HUWWW
TA贡献1874条经验 获得超12个赞
friend
Matrix::
friend
Matrix
紫衣仙女
TA贡献1839条经验 获得超15个赞
namespace Math{ class Matrix { public: [...] friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix) { [...] } };}
Math
Math::Matrix<TypeA, N>
.
梦里花落0921
TA贡献1772条经验 获得超6个赞
namespace Math{ class Matrix { public: [...] } std::ostream& operator<< (std::ostream& stream, const Math::Matrix& matrix);}
在你的实现中
std::ostream& operator<<(std::ostream& stream, const Math::Matrix& matrix) { matrix.print(stream); //assuming you define print for matrix return stream; }
- 3 回答
- 0 关注
- 609 浏览
添加回答
举报
0/150
提交
取消