Ergebnis 1 bis 8 von 8

Thema: C++ Klassen

  1. #1
    Trojaner
    Registriert seit
    02.12.2007
    Beiträge
    54

    Standard C++ Klassen

    Hallo Leute,

    habe vor einigen Tagen wieder mit C/C++ angefangen. Bin derzeit biem Kapitel Klassen, genauer beim Überladen von Methoden. Ich habe alles genau so befolgt wie es im Buch stand und den Abschnitt 5 mal gelesen, finde den Fehler aber trotzdem nicht. Wäre schön wenn mal jemand über meinen Code schaut und mir zeigt was ich falsch gemacht habe.

    Becher.h
    Code:
    #pragma once
    #include <string>
    
    class Becher
    {
    public:
    	std::string inhalt;
    	double fuellmenge;
    	int fassungsvermoegen;
    	Becher(std::string in, double fuell, int fass);
    	void ausgabe();
    	bool reichtKapazitaet(int ml);
    };
    Becher.cpp
    Code:
    #include "Becher.h"
    #include <string>
    #include <iostream>
    
    Becher::Becher(std::string in, double fuell, int fass)
    : inhalt(in), fuellmenge(fuell), fassungsvermoegen (fass)
    {
    }
    void Becher::ausgabe() {
    	std::cout << "Der Becher ist mit " << this->inhalt << " gefüllt.";
    }
    bool Becher::reichtKapazitaet(int ml) {
    	double platz = fassungsvermoegen-(fassungsvermoegen/100*fuellmenge);
    	return (platz >= ml);
    }
    bool Becher::reichtKapazitaet(Becher* b) {
    	if(inhalt != b->inhalt)
    		return (false);
    	return(reichtKapazitaet(
    		static_cast<int>(b->fassungsvermoegen/100.0F*
    						 b->fuellmenge)));
    }
    Class.cpp
    Code:
    #include "Becher.h"
    #include <string>
    
    void main () {
    	Becher b("Wasser",50,500);
    	b.ausgabe();
    }

  2. #2
    Michelangelo Virus
    Registriert seit
    07.11.2008
    Beiträge
    275

    Standard

    #include "Becher.h"
    #include <string>
    #include <iostream>
    [center:c409359af9]HardBeats Sensation[/center:c409359af9]
    [center:c409359af9]BM Profil - [5/4/0][/center:c409359af9]

  3. #3
    Trojaner
    Registriert seit
    02.12.2007
    Beiträge
    54

    Standard

    Zitat Zitat von Jack Daniel's
    #include "Becher.h"
    #include <string>
    #include <iostream>
    Meinst du in der Class.php noch <iostream> includen? Das bringt leider nichts, in der Main steht ja auch keine Ein-/Ausgabe.

  4. #4
    has one Avatar von noctem
    Registriert seit
    08.06.2008
    Beiträge
    392

    Standard

    Was zeigt der Compiler für eine Fehlermeldung?
    noctem{aet}jabber.ccc.de

  5. #5
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Die Reihenfolge ist falsch.
    Mach erstmal:

    #include <iostream>
    #include <string>

    using namespace std;
    #include "Becher.h"

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  6. #6
    Trojaner
    Registriert seit
    02.12.2007
    Beiträge
    54

    Standard

    Zitat Zitat von noctem
    Was zeigt der Compiler für eine Fehlermeldung?
    Ach verdammt, ich war so durcheinander, habe ganz vergessen die zu nennen.

    \klasse\klasse\becher.cpp(16) : error C2511: 'bool Becher::reichtKapazitaet(Becher *)': Überladene Memberfunktion nicht in 'Becher' gefunden
    \klasse\klasse\becher.h(5): Siehe Deklaration von 'Becher'

    @BlackBerry: Das habe ich gerade ausprobiert, ändert auch nichts.

    Ist bestimmt irgend ein ganz banaler Fehler. Muss mal schauen, ich glabue zu dem Buch gabs im Internet die fertigen Projekte, zu den Übungen etc.. Dann schaue ich dort auch nochmal nach.

  7. #7
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Ok ich hab's...
    Bei Becher.h noch folgendes in die Klassendefinition aufnehmen:
    Code:
    bool reichtKapazitaet(Becher *);
    Ausgabe:
    Code:
    blackberry@system:~/Desktop$ g++ Becher.cpp -c -o Becher.o; g++ Becher.o Class.cpp -o a; ./a; echo
    Der Becher ist mit Wasser gefüllt.
    blackberry@system:~/Desktop$

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  8. #8
    Trojaner
    Registriert seit
    02.12.2007
    Beiträge
    54

    Standard

    Zitat Zitat von BlackBerry
    Ok ich hab's...
    Bei Becher.h noch folgendes in die Klassendefinition aufnehmen:
    Code:
    bool reichtKapazitaet(Becher *);
    Ah genial, vielen Dank. Ich wusste doch dass es wieder nur irgendetwas ganz banales sein muss. Auf die Idee einer zweiten Definition bin ich garnicht gekommen. Da davon auch nichts im Buch stand, habe ich mir gedacht, wenn ich zweimal definiere, dann macht der Compiler auch wieder Probleme.

    Und von dem letzten Mal proggen vor rund zwei Jahren ist auch nicht mehr viel hängen geblieben xD

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •