Fehler nicht nachzuvollziehen

FoJu

Grünschnabel
Hi, mein Problem ist volgendes. Wenn ich mein Prog compilieren möchte erhalte ich folgende Fehlermeldung: "Prog8_1.cpp": E2316 'GesammtGewicht' ist kein Element von 'Laster' in Funktion main() in Zeile 35 . Wenn ich das richtig deute will mir der Compiler damit sagen, dass 'GesammtGewicht' kein Element der Klasse 'Laster' ist. Nur kann ich keinen Fehler in meinem Code finden, der diesen Fehler verursachen könnte.
Der Code der mit 'GesammtGewicht zu tun hat habe ich blau hinterlegt

Könnte es an meinem Kompeiler liegen? Ich benutze den C++BuilderX von Borland

Für jede Hife bedanke ich mich jetzt schon mal im voraus.

// Kapitel 7 - Programm 8 - ALLEVEH.CPP
#include <iostream.h>
#include "vehikel.h"
#include "auto.h"
#include "laster.h"

int main()
{
Vehikel Hochrad, Fahrrad;

Hochrad.Initialisiere( 1, 5.7 );
Fahrrad.Initialisiere( 2, 2.3 );
cout << "Das Hochrad hat " << Hochrad.HoleRaeder() << " Rad.\n";
cout << "Das Fahrrad hat " << Fahrrad.HoleRaeder() << " Räder.\n";
cout << "Die Radlast des Hochrades betraegt " << Hochrad.Radlast() << " kg auf dem einzigen Rad.\n";
cout << "Die Radlast des Fahrrades betraegt " << Fahrrad.Radlast() << " kg auf dem einzigen Rad.\n";
cout << "Das Hochrad wiegt " << Hochrad.HoleGewicht() << " kg.\n";
cout << "Das Fahrrad wiegt " << Fahrrad.HoleGewicht() << "kg.\n\n";

Auto Sedan;

Sedan.Initialisiere( 4, 1600.0, 5 );
cout << "Der Sedan fuehrt " << Sedan.Passagiere() << " Passagiere mit sich.\n";
cout << "Der Sedan wiegt " << Sedan.HoleGewicht() << " kg.\n";
cout << "Die Radlast des Sedan ist " << Sedan.Radlast() << " kg pro Rad.\n\n";

Laster Sattelschlepper, Tieflader;

Sattelschlepper.Initialisiere( 18, 5700.0 );
Sattelschlepper.InitLaster( 1, 15300.0 );
Tieflader.Initialisiere( 18, 15700.0 );
Tieflader.InitLaster( 1, 115300.0 );
cout << "Der Sattelschlepper wiegt " << Sattelschlepper.HoleGewicht() << " kg.\n";
cout << "Die Effizienz des Sattelschleppers ist " << 100.0 * Sattelschlepper.Effizienz() << " Prozent.\n";
cout << "Das Gesammtgewicht des Tieflader ist " << Sattelschlepper.GesammtGewicht() << " kg.\n";
cout << "Der Tieflader wiegt " << Tieflader.HoleGewicht() << " kg.\n";



return 0;
}

--------------------------------------------------------------

// Kapitel 7 - Programm 7 - LASTER.CPP
#include "laster.h"

void Laster::InitLaster(int WieViele, float MaxLadung)
{
Passagieranzahl = WieViele;
Ladung = MaxLadung;
}

float Laster::Effizienz(void)
{
return Ladung /(Ladung + Gewicht);
}

float Laster::GesammtGewicht(void)
{
return (Ladung + Gewicht);
}


int Laster::Passagiere(void)
{
return Passagieranzahl;
}

-----------------------------------------------------------

// Kapitel 7 - Programm 6 - LASTER.H
#ifndef LASTER_H
#define LASTER_H

#include "vehikel.h"

class Laster : public Vehikel
{
int Passagieranzahl;
float Ladung;
public:
void InitLaster(int WieViele = 2, float MaxLadung = 10000.0);
float Effizienz(void);
int Passagiere(void);
float GesammtGewicht(void);
};


#endif
 
Wahrscheinlich ist der Compiler sauer, über den immer wieder auftauchenden Rechtsschreibfehler (gesamt!), da verliert jeder mal die Nerven *gg*...
Sorry, off-topic, weiß leider auch keine Erklärung dafür.
 
hmm, das hatte ich befürchtet. Trotz der korrektur des Rechschreibfehlers lasst sich der Compiler nicht überreden. Shit happens. Hinnehmen und weiter mit dem C++ üben. Danke fürs antworten.
 
Versuch dich dem Problem mal anzunähern. Ruf mal die Methode an anderen Stellen in der main auf oder mal komplett alleine, gib ihr mal ganz andere Namen. Selbst wenn's daran eigentlich nicht liegen kann, stolpert man doch oft über den Fehler (hab auch schon so oft Bug! gedacht und dann habe ich einen Buchstaben klein statt groß geschrieben...).
 
Also zeige mal die Basisklasse Vehikel dann schau ma mal weiter. (Bei mir hats funktioniert nachdem ich die Klasse von nichts abgeleitet habe und die Methoden die fehlten programmiert habe)
 
Basisklasse 'vehikel.h'
-----------------------------------------------

// header-Datei für Vehikel

#ifndef VEHIKEL_H
#define VEHIKEL_H

class Vehikel
{
protected:
int Raeder;
float Gewicht;
public:
void Initialisiere(int EinRaeder, float EinGewicht);
int HoleRaeder(void);
float HoleGewicht(void);
float Radlast(void);
};

#endif
 
Du kannst doch auch die Methode Effizienz aufrufen, ohne Fehler, also funktioniert deine Klasse schonmal prinzipiell. Funktioniert keine Methode außer HoleGewicht und Effizienz? Hast du mal noch irgendeine andere Methode hinzugefügt? Kann eigentlich gar nicht sein. Ich werde den Code gleich mal bei mir ausprobieren...
 
Hab das Programm kompiliert und es läuft. Da kann man sich also dumm und dämlich suchen. Also entweder hälst du uns hier alle zum Narren oder dein Compiler ist tatsächlich verbuggt. Welchen nimmst du denn?
(Ach ja, #include <iostream> und nicht iostream.h! Daran kann der Fehler zwar nicht liegen, aber trotzdem...)
 
ich benutze den C++BuilderX von Borland. Ist eine Personal Edition. Mehr Infos habe ich nicht, müsste aber ziemlich aktuell sein habe ich erst vor 2 Monaten gekauft. Ich werde es mal mit neuinstallation versuchen.

PS: Bei mir muss es Iostream.h heissen, sonst funst es nicht.
 
Zurück