Hilfe,was will der Compiler?



  • Hey Leute,ich komm nicht weiter mit meinem programm und der compiler spuckt mir folgende Fehlermeldung:

    klassen.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall Medium::anzeigen(void)" (?anzeigen@Medium@@UAEXXZ)
    C:\Studium\2.Semester\Programmieren C++\Übungen\Übung 4\projekt22\Debug\projekt22.exe : fatal error LNK1120: 1 unresolved externals
    Build log was saved at "file://c:\Studium\2.Semester\Programmieren C++\Übungen\Übung 4\projekt22\Debug\BuildLog.htm"
    projekt22 - 2 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    

    Nun was will mir diese Meldung sagen?

    Bitte helft mir bis morgen muss ich es zum laufen bringen.
    gruß



  • Er findet die Methode Medium::anzeigen nicht, entweder weil Du sie vergessen hast zu implementieren, oder weil das passende Objekt fehlt.



  • Die methode Medium::anzeigen ist eine virtuelle funktion!
    hier meine header:

    #include <iostream>
    #include <iomanip>
    #include <string>
    using namespace std;
    
    #ifndef _headm_
    #define _headm_
    
    const int n=15;
    const int breite=12;
    
    class Medium {
    
    protected:    // Vererbte klassen dürfen drauf zugreifen!
    	int signatur;
    	string titel;
    	bool bstatus;
    
    public:
    	Medium();	
    	virtual void anzeigen();
    	void entleihen();
    	void rueckgabe();
    	void titelleiste();
    	int getsig();
    
    };
    
    typedef Medium T;
    
    void titelleiste();
    
    class Buch:public Medium{
          int seitenzahl;
    
          public:
    		Buch ();
    	  void anzeigen();
          };
    
    class Video:public Medium{
    
          double spieldauer;
    
          public:
    		  Video();
    	  void anzeigen();       
    
          };
    
    class plausi_fehler
    {
    	int sig;
    	int failno;
    public:
    	plausi_fehler(int _sig,int _failno)
    		{
    		sig=_sig;
    		failno=_failno;
    		}
    	string text()
    		{
    		if (failno==0)
    			return "\nFehler beim Entleihen von Signatur\n ";
    		else
    			return "\nFehler bei der Rückgabe von Signatur\n ";
    		}
    
    };
    
    #endif
    


  • Joggi schrieb:

    Die methode Medium::anzeigen ist eine virtuelle funktion!

    Solange es keine pur virtuelle Funktion ist ( virtual void anzeigen()=0; ), mußt du sie trotzdem angeben, sonst beschwert sich der Linker darüber, daß sie fehlt.



  • Dann war es wohl das gewesen,jetzt erscheinen nämlich andere Fehlermeldungen 😉
    Danke für deine Hilfe!

    Gruß joggi


Anmelden zum Antworten