【问题标题】:Error during implementation of operator>> :C++ no operator matches these operands operand types are: std::istream >> const double error执行 operator>> 时出错:C++ no operator 与这些操作数匹配,操作数类型为:std::istream >> const double error
【发布时间】:2019-11-23 22:01:48
【问题描述】:

无法解决此错误,请帮助我。 我不知道该尝试什么,我之前没有做过 operator>> 重载。 我不知道为什么我得到这个错误。 如果我解决了这个问题,我想从这个重载的文件中读取。

代码如下:

#include "Diak.h"

Diak::Diak(string vn, string kn, double a)
{
    this->vnev = vn;
    this->knev = kn;
    this->atlag = a;
}

double Diak::getAtlag() const
{
    return this->atlag;
}

string Diak::getVnev() const
{
    return this->vnev;
}

string Diak::getKnev() const
{
    return this->knev;
}

ostream& operator<<(ostream& os, const Diak& diak)
{
    os << diak.vnev << " " << diak.knev << " " << diak.atlag << endl;

    return os;
}

istream& operator>>(istream& is, const Diak& diak)
{
    is >> diak.vnev >> diak.knev >> diak.atlag;

    return is;
}

bool operator<(const Diak& d1, const Diak& d2)
{
    if (d1.getVnev() < d2.getVnev())
    {
        return true;
    }
    else if(d1.getKnev() == d2.getKnev())
    {
        if (d1.getKnev() < d2.getKnev())
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}

这一行的问题:

is >> diak.vnev >> diak.knev >> diak.atlag;

【问题讨论】:

  • diakconst,这意味着它的数据成员不能被is 修改。删除 const 以解决此问题。

标签: c++ syntax-error operator-overloading


【解决方案1】:

我只需要从实现和声明中删除 const(在头文件中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2022-01-06
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多