我一直在编写代码,想要重载<<运营商。为此,我将运算符声明为友元函数,以便它可以访问一些应保持私有的私有变量!但它给了我很多错误。 让我遇到最多问题的是它不允许我访问我需要的私有数据。如果我注释掉运算符,程序编译就好了。抱歉,因为代码中的语言是德语。
部首:
#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()
{
}
答案 0 :(得分:3)
你忘记了fahrzeug.h中的#include <iostream>
。
添加
#include <iostream>
using std::ostream;
之后
#pragma once