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

时间:2016-01-05 22:07:23

标签: c++ operator-overloading

我一直在编写代码,想要重载<<运营商。为此,我将运算符声明为友元函数,以便它可以访问一些应保持私有的私有变量!但它给了我很多错误。 让我遇到最多问题的是它不允许我访问我需要的私有数据。如果我注释掉运算符,程序编译就好了。抱歉,因为代码中的语言是德语。

部首:

#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()
{
}

1 个答案:

答案 0 :(得分:3)

你忘记了fahrzeug.h中的#include <iostream>

添加

#include <iostream>
using std::ostream;

之后

#pragma once