again and again stl ;)
so hab da n (kleines) problem ;P
Zur Frage:
In einem Conatiner sollen Objekte von verschiedenen Klassen(eine haupt und eine unterklasse die erbt) gespeichert werden.
Wie kann man es realisieren das beim eintragen von einer Kaffeemaschine (siehe main.cpp) die Klasse Kaffeemaschine bei der funktion GeraetEintragen() benutzt wird und nicht AllgemeinesGeraet.
Weiteres Problem besteht darin wie man dann in GeraetEintragen das Attribut iAnzahlTassen verwendet.
fragen über fragen
gruesse quibb
Zur Frage:
In einem Conatiner sollen Objekte von verschiedenen Klassen(eine haupt und eine unterklasse die erbt) gespeichert werden.
Wie kann man es realisieren das beim eintragen von einer Kaffeemaschine (siehe main.cpp) die Klasse Kaffeemaschine bei der funktion GeraetEintragen() benutzt wird und nicht AllgemeinesGeraet.
Weiteres Problem besteht darin wie man dann in GeraetEintragen das Attribut iAnzahlTassen verwendet.
fragen über fragen
gruesse quibb
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include "Geraete.h"
#include <iostream>
using namespace std;
int main(void) {
AllgemeinesGeraet test;
Kaffeemaschine geraet1("bla", 1);
test.GeraetEintragen(geraet1);
cout << test;
return 0;
}
|
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#include <vector>
#include <string>
#include <iostream>
using namespace std;
class AllgemeinesGeraet {
vector<AllgemeinesGeraet> Geraet;
private:
string sGeraetBezeichnung;
public:
AllgemeinesGeraet();
AllgemeinesGeraet(string sBezeichnung);
void GeraetEintragen(AllgemeinesGeraet &b) { // <-PROBLEM
Geraet.push_back(b);
}
friend ostream& operator<<(ostream& os, AllgemeinesGeraet &test) {
vector<AllgemeinesGeraet>::iterator pos;
for (pos = test.Geraet.begin(); pos < test.Geraet.end(); ++pos)
{
os << *pos << endl;
}
os << "Bezeichnung: " << test.sGeraetBezeichnung;
return os;
}
};
class Kaffeemaschine : public AllgemeinesGeraet {
private:
int iAnzahlTassen;
public:
Kaffeemaschine(string sBezeichnung, int iTassen);
};
|
Vielleicht solltest du es lieber mit den Grundlagen von C++ versuchen...hast du überhaupt eine Ahnung was du da geschrieben (oder kopiert) hast?
Und deine Fehlerbeschreibung ist auch nicht das Wahre...
Ich weiß zwar nicht was du mit
bewirken möchtest, aber wenn du willst das GereatEintragen aus der Klasse Kaffeemaschine genommen wird (wo liegt hier der Sinn? Denk mal darüber nach, warum wohl die Subklasse von der Oberklasse erbt) kannst du die Funktion in der Kaffeemaschine Klasse überschrieben.
Naja, hier von mir ein paar Tipps:
-Polymorphie (Stichwort: virtual)
-Was bewirkt eigentlich... (Stichwort: friend, übeladener Operator, etc)
-Wie man in C++ programmiert (Stichwort: Code in Headerdatein...)
Ich weiß nicht wieviel Zeit du bis zur Klausur hast, aber es scheint als hättest du das letzte Jahr (bzw die letzten Semester) geschlafen
Von Heute auf Morgen wirst du das auch nicht schaffen, wie schon gesagt, befass dich erstmal mit den Grundlagen (Klassen allgemein, dann Vererbung, dann Polymorphie), nicht alles auf einmal >_>
Und deine Fehlerbeschreibung ist auch nicht das Wahre...
Ich weiß zwar nicht was du mit
Zitat
Wie kann man es realisieren das beim eintragen von einer Kaffeemaschine (siehe main.cpp) die Klasse Kaffeemaschine bei der funktion GeraetEintragen() benutzt wird und nicht AllgemeinesGeraet.
bewirken möchtest, aber wenn du willst das GereatEintragen aus der Klasse Kaffeemaschine genommen wird (wo liegt hier der Sinn? Denk mal darüber nach, warum wohl die Subklasse von der Oberklasse erbt) kannst du die Funktion in der Kaffeemaschine Klasse überschrieben.
Naja, hier von mir ein paar Tipps:
-Polymorphie (Stichwort: virtual)
-Was bewirkt eigentlich... (Stichwort: friend, übeladener Operator, etc)
-Wie man in C++ programmiert (Stichwort: Code in Headerdatein...)
Ich weiß nicht wieviel Zeit du bis zur Klausur hast, aber es scheint als hättest du das letzte Jahr (bzw die letzten Semester) geschlafen

Von Heute auf Morgen wirst du das auch nicht schaffen, wie schon gesagt, befass dich erstmal mit den Grundlagen (Klassen allgemein, dann Vererbung, dann Polymorphie), nicht alles auf einmal >_>
Aktuell nutze ich: Windows, Linux, MacOS X, Solaris...weil die Welt nicht nur S/W ist!
Blog
Blog
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »silence« (28. Januar 2006, 23:00)
also der code is selber geschrieben... naja ob ich ihn verstehe is so ne andere sache.
und das einzigste was ich erreichen will ist das ne kaffeemaschine mit 2 attributen in dem container gespeichert wird und ich diese dann auch wieder ausgeben kann.
aber erstmal vielen dank
quibb
Nachtrag:
So hab fleissig Grundlagen studiert und möchte mich nochmal entschuldigen das ich sachen poste von denen ich keinen ahnung hab
und ja ich hab das semester verpennt ;P
gruesse quibb
falls es jmd. intressiert: keine ahnung ob die lösung "wunderbar" ist. aber es funktioniert...
main.cpp
objekt.h
objekt.cpp
und das einzigste was ich erreichen will ist das ne kaffeemaschine mit 2 attributen in dem container gespeichert wird und ich diese dann auch wieder ausgeben kann.
aber erstmal vielen dank
quibb
Nachtrag:
So hab fleissig Grundlagen studiert und möchte mich nochmal entschuldigen das ich sachen poste von denen ich keinen ahnung hab

und ja ich hab das semester verpennt ;P
gruesse quibb
falls es jmd. intressiert: keine ahnung ob die lösung "wunderbar" ist. aber es funktioniert...
main.cpp
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include "objekt.h"
int main(void) {
AllgemeinesGeraet Geraet1;
Geraet1.Geraet.push_back(new Kaffeemaschine("Tchibo XL1", 6));
Geraet1.Geraet.push_back(new Heizung("Erdgeschoss Kueche", 18));
for(vector<AllgemeinesGeraet*>::iterator j = Geraet1.Geraet.begin(); j != Geraet1.Geraet.end(); j++)
(*j)->ausgabe();
return 0;
}
|
objekt.h
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#include <vector>
#include <string>
#include <iostream>
using namespace std;
class AllgemeinesGeraet {
private:
string sBezeichnung;
public:
vector<AllgemeinesGeraet*> Geraet;
AllgemeinesGeraet();
AllgemeinesGeraet(string);
string GetBezeichnung() {
return sBezeichnung;
}
virtual ausgabe() {
}
};
class Kaffeemaschine : public AllgemeinesGeraet {
private:
int iAnzahlTassen;
public:
Kaffeemaschine();
Kaffeemaschine(string, int);
virtual ausgabe() {
cout << "Kaffeemaschine: " << AllgemeinesGeraet::GetBezeichnung() << " mit " << iAnzahlTassen << " Tassen Kaffee." << endl << endl;
}
};
class Heizung : public AllgemeinesGeraet {
private:
int iTemperatur;
public:
Heizung(string, int);
virtual ausgabe() {
cout << "Heizung: " << AllgemeinesGeraet::GetBezeichnung() << " mit " << iTemperatur << " Grad Celsius." << endl << endl;
}
};
|
objekt.cpp
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include "objekt.h"
AllgemeinesGeraet::AllgemeinesGeraet() {
}
AllgemeinesGeraet::AllgemeinesGeraet(string sBez) : sBezeichnung(sBez) {
}
Kaffeemaschine::Kaffeemaschine() {
}
Kaffeemaschine::Kaffeemaschine(string sBez, int iAnz) : AllgemeinesGeraet(sBez), iAnzahlTassen(iAnz) {
}
Heizung::Heizung(string sBez, int iTemp) : AllgemeinesGeraet(sBez), iTemperatur(iTemp) {
}
|
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »heinervdm« (3. Februar 2006, 09:43)


