重载输出运算符时出现错误

Bunch of errors while overloading the output operator

本文关键字:错误 输出 运算符 重载      更新时间:2023-10-16

我一直在写一段代码,希望重载<lt;操作人员为此,我将运算符声明为友元函数,这样它就可以访问一些应该保持私有的私有变量!但这让我又犯了很多错误。给我带来最大问题的是,它不允许我访问我需要的那些私人数据。如果我注释掉运算符,程序就可以编译了。很抱歉,因为代码中的语言是德语。

标题:

#pragma once
class fahrzeug
{
private:
    int hg;
    double tank;
    double fst;
    double dsv;
    double ks;
public:
    fahrzeug();
    fahrzeug(const fahrzeug& brm);
    friend ostream& operator<<(ostream& os, const fahrzeug& obj); // <------
    ~fahrzeug();
};

CPP:

#include "fahrzeug.h"
#include <iostream>
using namespace std;

fahrzeug::fahrzeug()
{
    hg = 180;
    tank = 50;
    fst = 45;
    dsv = 9;
    ks = 50000;
}
fahrzeug::fahrzeug(const fahrzeug& brm)
{
    hg = brm.hg;
    tank = brm.tank;
    fst = brm.fst;
    dsv = brm.dsv;
    ks = brm.ks;
}
ostream& operator<<(ostream& os, const fahrzeug& brm) // <------ Operator
{
    os << "Höchstgeschwindigkeit: " << brm.hg << "km/h." << endl;
    os << "Volumen des Tanks: " << brm.tank << "L." << endl;
    os << "Füllstand des Tanks: " << brm.fst << "L." << endl;
    os << "Durchschnittlicher Spritverbrauch: " << brm.dsv << "L/(100km)" << endl;
    os << "Kilometerstand des Fahrzeugs: " << brm.ks << "km." << endl;
    return os;
}
fahrzeug::~fahrzeug()
{
}

您忘记在fahrzeug.h中使用#include <iostream>

添加

#include <iostream>
using std::ostream;

之后

#pragma once