小编Tal*_*sky的帖子

在一个命令中使用2个重载运算符会导致错误

我在C++中创建了一个带有重载运算符的矩阵类,我重载了运算符,<<(输出,使用ostream库),运算符+添加到矩阵,运算符=用于将一个矩阵分配给另一个矩阵.问题是,当我使用时

cout<<m1+m2<<endl;
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

E0349: No operator << matches these operands type are: std::ostream << Matrix
Run Code Online (Sandbox Code Playgroud)

但如果我做以下事情:

Matrix m = m1 + m2;
cout<<m<<endl;
Run Code Online (Sandbox Code Playgroud)

它完美无缺.这是<<运算符:

ostream& operator<< (ostream &os,const Matrix& m)
{
    if (m.isValid())
    {
        os << '|';
        for (int i = 0; i < m.getRows(); i++)
        {
            for (int j = 0; j < m.getCols(); j++)
            {
                os << m.getMatrix()[i][j];
                if (j < m.getCols() - 1)
                {
                    os << ',';
                }
            }
            os << '|';
        }
    }
    else
    {
        os …
Run Code Online (Sandbox Code Playgroud)

c++ class operator-overloading

1
推荐指数
1
解决办法
33
查看次数

如何知道我使用的是迭代 DNS 还是递归 DNS

当我发送 DNS 时,如何使用wireshark 知道我使用的是迭代方式还是递归方式?

iteration dns recursion wireshark

0
推荐指数
1
解决办法
2321
查看次数