c++ - operator>> 执行期间出错:C++ 没有运算符匹配这些操作数 操作数类型为:std::istream >> const double error

标签 c++ syntax-error operator-overloading

无法解决此错误,请帮助我。 我不知道该尝试什么,我以前没有做过 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;

enter image description here

最佳答案

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

关于c++ - operator>> 执行期间出错:C++ 没有运算符匹配这些操作数 操作数类型为:std::istream >> const double error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59012669/

相关文章:

c++ - 将字符串映射到 vector 或将不同的键映射到一个值

c++ - 具有未知参数 vector 类型的虚函数

C++使用运算符重载将两个时间值相加

c++ - 重载派生类的赋值运算符的正确方法是什么?

c# - DLL 不能在 C# 中运行

c++ - 避免 std::bad_alloc。 new 应该返回一个 NULL 指针

Eclipse CDT : Disable red underlining

c++ - 返回对字符串的 const 引用

python - Python 中非本地语句的语法错误

C++帮助类继承