Fehler mein Ausführen des Programmes
-
Kommt heute noch eine normale antwort ?
-
Da fehlt die "basis.h"! Ohne die gibts wohl keine Hilfe....
-
Also ich glaube nicht, daß dieser Fehler erst beim Ausführen auftritt

Und außerdem sagen dir die Meldungen doch, was du falsch machst - du hast einen "elektro*" (wohin der zeigt, ist dem Compiler egal), da kannst du nur auf die Methoden der Basisklasse zugreifen.(gab's das Problem nicht neulich schonmal?)
-
Das ist die Basis.h
#include <iostream> #include <string> using namespace std; /*---------------------------------------Elektro-----------------------------------*/ class elektro { public: elektro(); ~elektro(); float getSpeicher(); void setSpeicher(float arbeit); void display(); protected: float speicher; }; /*---------------------------------------Computer-----------------------------------*/ class computer: public elektro { public: computer(); ~computer(); float getGrafikkarte(); void setGrafikkarte(float grafik); void display(); private: float grafikkarte; }; /*---------------------------------------Laptop-----------------------------------*/ class laptop: public elektro { public: laptop(); ~laptop(); int getWlan(); void setWlan(int w); void display(); private: int wlan; };
-
Wie CStoll sagte: In der Klasse elektro gibt es keine Methode setSpeicher.
BTW: Warum sind die Bittsteller heute eigentlich so unfreundlich?!
-
Ne das kann nicht der Fehler sein,
ich sehe in der Klasse Elektro die methode..
Robtschick will wahrscheinlich eine dynamische verwaltung die bei ihm
anscheinend fehlgeschlagen ist.aber den fehler seh ich jetz auch nicht
-
Sorry, meinte auch nicht getSpeicher sondern get/setGrafikkarte und -Wlan.
-
ja das stimmt schon ,
aber deiner meinung nach soll ich alle elemente in die basisklasse einbinden,,
das wollte ich aber vermeiden, weil jede klasse seine eigenen elemente hat. + basisklassewie soll ich das jetzt machen ?
-
Stimmt, du warst der letzt mit diesem Problem
Und du solltest dir immer noch die Antworten zu deinem letzten Thread durchlesen.
-
also ich sehe in deiner basis.h nur funktions deklarationen,aber keine definitionen...naja vielleicht liegts daran das ich von c++ keine ahnung hab.
-
c++newb schrieb:
naja vielleicht liegts daran das ich von c++ keine ahnung hab.
Das wird's sein
(scnr)
Die Definitionen stehen üblicherweise nicht im Header, sondern in einer dazugehörigen CPP-Datei, die unabhängig vom Hauptprogramm compiliert und anschließend eingelinkt wird.
-
CStoll schrieb:
c++newb schrieb:
naja vielleicht liegts daran das ich von c++ keine ahnung hab.
Das wird's sein
(scnr)
Die Definitionen stehen üblicherweise nicht im Header, sondern in einer dazugehörigen CPP-Datei, die unabhängig vom Hauptprogramm compiliert und anschließend eingelinkt wird.dann würde ich gerne die cpp datei sehen...die paar funktionen kann man doch auch inline proggen ist dann auch etwas schneller.aber wie du schon sagtest ich hab ja null ahnung...
-
Nunja, für das Problem von "Robtschick" ist es auch unerheblich, wie die Funktionen implementiert sind - wichtig ist nur, daß und wo (bzw. wo nicht) sie exisistieren.
c++newb schrieb:
aber wie du schon sagtest ich hab ja null ahnung...
das hast DU selber von dir behauptet

-
//basis.h #include <iostream> #include <string> using namespace std; /*---------------------------------------Elektro-----------------------------------*/ class elektro { public: elektro(); ~elektro(); virtual float getSpeicher(); virtual void setSpeicher(float arbeit); void display(); private: float speicher; }; /*---------------------------------------Computer-----------------------------------*/ class computer: public elektro { public: computer(); ~computer(); virtual float getGrafikkarte(); virtual void setGrafikkarte(float grafik); void display(); private: float grafikkarte; }; /*---------------------------------------Laptop-----------------------------------*/ class laptop: public elektro { public: laptop(); ~laptop(); int getWlan(); void setWlan(int w); void display(); private: int wlan; };//basis.cpp #include "basis.h" // KLASSE ELEKTRO float elektro::getSpeicher() { return speicher; } void elektro::setSpeicher(float arbeit) { speicher=arbeit; } void elektro::display() { cout <<" Der Arbeitsspeicher betraegt " <<speicher<<endl; } // KLASSE COMPUTER float computer::getGrafikkarte() { return grafikkarte; } void computer::setGrafikkarte(float grafik) { grafikkarte=grafik; } void computer::display() { cout <<" Der Grafikspeicher betraegt " <<grafikkarte; } // KLASSE LAPTOP int laptop::getWlan() { return wlan; } void laptop::setWlan(int w) { wlan=w; } void laptop:: display() { cout <<" Die W-Lan Geschwindigkeit betraegt:" <<wlan; }//main.cpp #include "basis.h" #include <iostream> #include <string> #include <windows.h> using namespace std; int auswahl; int main() { int w; float grafik, arbeit; string neustart; elektro *zeiger; cout <<"Bitte wahlen sie aus Elektro (1) Computer (2) Laptop (3):"; cin>>auswahl; cout <<"Wie viel Arbeitsspeicher:" ; cin >>arbeit; zeiger->setSpeicher(arbeit); zeiger->display(); if(auswahl==2) { do{ cout <<"Wie viel Grafikspeicher:" ; cin >>grafik; zeiger->setSpeicher(arbeit); zeiger->setGrafikkarte(grafik); zeiger->display(); }while (grafik <1 && grafik >=256); } if( auswahl==3) { do{ cout <<"Wie viele W-Lan kanaele:" ; cin >>w; zeiger->display(); zeiger->setSpeicher(arbeit); zeiger->setWlan(w); }while (w <1 && w >=256); } cout <<" neustart Fragezeichen ja (j) nein (n) " <<endl; cin >> neustart; if (neustart=="j") { system("cls"); main(); } else{ return 0; } return 0; }--------------------Konfiguration: elektro - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
C:\Dokumente und Einstellungen\Robtschick\Desktop\C\Elektro\elektro\main.cpp(45) : error C2039: 'setGrafikkarte' : Ist kein Element von 'elektro'
c:\dokumente und einstellungen\robtschick\desktop\c\elektro\elektro\basis.h(8) : Siehe Deklaration von 'elektro'
C:\Dokumente und Einstellungen\Robtschick\Desktop\C\Elektro\elektro\main.cpp(59) : error C2039: 'setWlan' : Ist kein Element von 'elektro'
c:\dokumente und einstellungen\robtschick\desktop\c\elektro\elektro\basis.h(8) : Siehe Deklaration von 'elektro'
Fehler beim Ausführen von cl.exe.elektro.exe - 2 Fehler, 0 Warnung(en)
--------------------------------------------------------------------------------ICH BRAUCHE ECHT HILFE:: UNDZWAR SOOOO das ich es nur einfüge und dann selbst verstehen muss was es damit aufsich hat... das mit dem dynamic_cast hab ich versucht der zeigt mir weitere fehler ..... irgendwas mit poly... irgendwas..
Schreib mir einer mal bitte das richtige Script.... ICH VERZWEIFEL SO LANGSAM

-
Hallo
die Fehlermeldungen sind doch eindeutig.
Du kannst über einen Zeiger vom Typ elektro nicht auf Elemente zugreifen, die erst der Klasse computer angehören.Desweiteren hast du zwar einen Zeiger vom Typ elektro, du erstellst aber nirgends eine gültige Instanz, nachdem der User die Auswahl getroffen hat.
bis bald
akari
-
GAR NICHT WEITERGEHOLFEN.....................
ICH KOMME NICHT WEITER MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN !!!!
ICH BIN DOOOOOOOOOOF deshalb so helfen
das ich es einfach einfügen sollll............ maannnnnnnnnnnn
BITTTTTTE ICH KOMME HIER NICHT KLAR ::: !
-
HEY HO,
das würde mich aber auch interessieren, wie man das machen sollten.
Könnte es jemand evtl. richtig stellen?
-
#include <string.h> #include <iostream.h> #include "elektro.h" int main() { int auswahl; float geschw; int grafikram; elektro *e_zeiger=new computer; elektro *e_zeiger2=new elektro; computer *c_zeiger=dynamic_cast<elektro*>(e_zeiger); cout << "Waehle zwischen 1 und 2: " << endl; cin >> auswahl; switch(auswahl) { case 1:e_zeiger = new elektro; cout << "Gib Geschw ein: " << endl; cin >> geschw; e_zeiger->setGeschwindigkeit(geschw); cout << "Geschwindigkeit ist " << e_zeiger->getGeschwindigkeit() <<endl; break; case 2:c_zeiger = new computer; cout << "Grafikspeischer eingeben " << endl; cin >> grafikram; c_zeiger->setGrafikspeicher(grafikram); cout << "Grafikspeicher " << c_zeiger->getGrafikspeicher() << endl; } return 0; }Ich habe das jetzt so gemacht , aber der sagt mir aus,,, das ich immer noch irgenwdelche fehler habeeeeeeeeeeeeeeeeeeeeeeeeeeeee..
son scheiß
--------------------Konfiguration: elektro - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
C:\Dokumente und Einstellungen\Robtschick\Desktop\uebung\elektro\main.cpp(15) : warning C4541: 'dynamic_cast' fuer polymorphen Typ 'class elektro' mit /GR- verwendet; unvorhersehbares Verhalten moeglich
C:\Dokumente und Einstellungen\Robtschick\Desktop\uebung\elektro\main.cpp(15) : error C2440: 'initializing' : 'class elektro *' kann nicht in 'class computer *' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
Fehler beim Ausführen von cl.exe.elektro.exe - 1 Fehler, 1 Warnung(en)
BITTE SO HELFEN DAS ICH ES EINSETZTEN KANNN PLS !!!!
-
#include <string.h> #include <iostream.h> #include "elektro.h" int main() { int auswahl; float geschw; int grafikram; elektro *e_zeiger=new computer; elektro *e_zeiger2=new elektro; computer *c_zeiger=dynamic_cast<elektro*>(e_zeiger); cout << "Waehle zwischen 1 und 2: " << endl; cin >> auswahl; switch(auswahl) { case 1:e_zeiger = new elektro; cout << "Gib Geschw ein: " << endl; cin >> geschw; e_zeiger->setGeschwindigkeit(geschw); cout << "Geschwindigkeit ist " << e_zeiger->getGeschwindigkeit() <<endl; break; case 2:c_zeiger = new computer; cout << "Grafikspeischer eingeben " << endl; cin >> grafikram; c_zeiger->setGrafikspeicher(grafikram); cout << "Grafikspeicher " << c_zeiger->getGrafikspeicher() << endl; } return 0; }Ich habe das jetzt so gemacht , aber der sagt mir aus,,, das ich immer noch irgenwdelche fehler habeeeeeeeeeeeeeeeeeeeeeeeeeeeee..
son scheiß
--------------------Konfiguration: elektro - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
C:\Dokumente und Einstellungen\Robtschick\Desktop\uebung\elektro\main.cpp(15) : warning C4541: 'dynamic_cast' fuer polymorphen Typ 'class elektro' mit /GR- verwendet; unvorhersehbares Verhalten moeglich
C:\Dokumente und Einstellungen\Robtschick\Desktop\uebung\elektro\main.cpp(15) : error C2440: 'initializing' : 'class elektro *' kann nicht in 'class computer *' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
Fehler beim Ausführen von cl.exe.elektro.exe - 1 Fehler, 1 Warnung(en)
BITTE SO HELFEN DAS ICH ES EINSETZTEN KANNN PLS !!!!
-
Kann mir nicht jemand per icq helfen oder so ???
146289675