Fehlermeldung_



  • was könnte diese fehlermeldung bedeuten können:

    .objs\main.o:main.cpp:(.text$_ZN5StrDBC1ERKSsS1_S1_S1_[StrDB::StrDB(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0xb4): undefined reference to `ICQ::ICQ(std::string const&)'
    .objs\main.o:main.cpp:(.text$_ZN5StrDBC1ERKSsS1_S1_S1_[StrDB::StrDB(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x127): undefined reference to `TOWN::TOWN(std::string const&)'
    .objs\main.o:main.cpp:(.text$_ZN5StrDBC1ERKSsS1_S1_S1_[StrDB::StrDB(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x19e): undefined reference to `GAME::GAME(std::string const&)'
    

    Ich bin froh über jede Antwort: Arbeite ein bisschen mit exceptions und wie man sieht mit Klassen



  • Du vergisst wohl irgendwelche librarys mitzulinken.
    Würd ich mal sponten sagen.



  • Glaube ich nicht, da das Programm bei ICQ::ICQ mekkert, die ich nur so deklariert habe:

    class ICQ{
    
        public:
        ICQ(const string& Iicqr);
    };
    
    class TOWN{
    
        public:
        TOWN(const string& Ttown);
    };
    
    class GAME{
    
        public:
        GAME(const string& Ggame);
    };
    

    Diesen übergebe ich so Werte:

    StrDB::StrDB(const string& nick,
                const string& icq = "",
                const string& town = "",
                const string& game = "")
    
    try{
                if (icq != ""){
                    icqnumb = new ICQ(icq);
                }
    
                if (town != ""){
                    spetown = new TOWN(town);
                }
    
                if (game != ""){
                    gamename = new GAME(game);
                }
            }
    

    Wiedereinmal froh über jede antwort



  • Oder die .cpp's mit den Implementierungen werden nicht mitkompiliert



  • Es ist alles in einer Datei



  • Obwohl: das mit der Lib könnte in Frage kommen. Welche genau müsste ich includen bzw. linken?



  • Zeig mal die Implementierung der Konstruktoren.



  • das ist so ziemlich mein programm:

    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    #include <string.h>
    #include <vector>
    ::std::string shomb(15,'#');
    
    class Image{
        public:
        Image(const ::std::string& imageDateFileName);
    };
    
    class AudioClip{
        public:
        AudioClip(const ::std::string& audioDataFileName);
    };
    
    class BookEntry{
        public:
        BookEntry(const ::std::string& name,
                const ::std::string& address = "",
                const ::std::string& imageFileName = "",
                const ::std::string& audioClipFileName = "")
                : theName(name), theAddress(address),
                theImage(0), theAudioClip(0)
                {
                    if(imageFileName != ""){
                        theImage = new Image(imageFileName);
                    }
                    if(audioClipFileName != ""){
                        theAudioClip = new AudioClip(audioClipFileName);
                    }
                }
    
        ~BookEntry(){
            delete theImage;
            delete theAudioClip;
        }
    
        private:
        ::std::string theName;
        ::std::string theAddress;
        Image *theImage;
        AudioClip *theAudioClip;
    };
    
    void testBookEntryClass(){
        BookEntry b("x,"y","z","z+1");
    }
    
    int main(int argc, char **argv[]){
        while(true){
            hmv(); //<--nur ein menü
        }
        return 0;
    }
    

    Ja, man könnte meinen das ist es. Aber mir kommt das alles sehr komisch vor, denn ich bin in dieser richtung der programmierung neu 🙄



  • Dann hast Du vermutlich bei allen vom Linker bemängelten Methoden keine Implementierung (will heissen den { funktionsinhalt; } )



  • Autsch!
    Wenn du die Konstruktoren nciht implementierst findet er sie natürlich auch nicht.
    Fals du glaubst das macht der compiler für dich irrst du,das macht er nur für den default-konstruktor (also der ohne argumente) die anderen findet er nicht, weil du sie nicht implementiert hast.

    Kleine Frage am Rande: was soll das eigentlich werden wenns fertig ist? Ein ICQ Client mit nem integrierten Spiel?



  • @storm: nein eigentlich nicht. war lediglich zu testzwecken

    und wie implementiere ich das nun? bin in sachen OO o.ä. nicht so bewandert(schäm)


Anmelden zum Antworten