Fehler mein Ausführen des Programmes



  • 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



  • Robtschick schrieb:

    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

    Da steht doch eh schon was du machen sollst. Lies dir mal ein Grundlagen Turorial zu OOP durch...

    BITTE SO HELFEN DAS ICH ES EINSETZTEN KANNN PLS !!!!

    Und der Sinn des Ganzen?



  • DU schlaukopf , sag es du mir doch mal biiiiiiiiiiiiiiittttte,

    ich gehe hier noch kaputt mit diesem behinderten missgeburten c++ programm
    ich hasse das wie die hölle und ihr quelt mich hier.........

    verate mir doch mein fehler.. oder seit ihr genauso bekloptt wie ich ?!

    ICH VERSTEHE DIESEN UNSINN VON PROGRAMIERUNG NICHT....................

    also schreib mir doch jemand mal eine lösung ...............



  • Wenn du es wie die Hölle hast warum lässt du es nicht einfach?
    Und ich bin mir sicher dass dir jetzt mehr Leute helfen wollen. Und wir wollen helfen, aber du musst dich schon einbringen.



  • Ich freue mich ja auch auf jede antwort, aber ich verstehe das einfach nicht, weil die das nicht in der schule hatten,
    und ich dieses dynamic_cast das erste mal gehört habe.. ich habe auch alles gelsen darüber
    es gibt eins das ist das von unterklassen zu oberklassen von oberklassen zu unterklasse vererben... aber man sollte es im seltenen falle tun... aber keiner sagt mir eine andere möglichkeit.. wie mache ich es denn mit diesen virtuellen dingern ?


Anmelden zum Antworten