Kann keine Klassen aus einer Libary einbinden



  • Hallo

    Ich versuche gerade ein Id3 Programm zu schreiben das ist mein erstes C++ Projekt das ich mir gesetzt habe.

    Das habe ich bisher geschrieben:

    #include <id3/tag.h>
    #include <id3/field.h>
    #include <iostream.h>
    #include <id3/field.h>
    
    using namespace dami;
    int main(){
    
    ID3_Tag myTag("Abba.mp3");
    
       ID3_Frame* myFrame = myTag.Find(ID3FID_TITLE);
       if (NULL != myFrame)
       {
         const char* title = myFrame->GetField(ID3FN_TEXT)->GetText();
         cout << "Title: " << title << endl;
       }
    
    return 0;
    }
    

    Und wenn ich das Kompelieren will dann kommt der Fehler

    mp3.cpp: In function `int main()':
    mp3.cpp:18: error: `GetText' undeclared (first use this function)
    mp3.cpp:18: error: (Each undeclared identifier is reported only once for each
       function it appears in.)
    mp3.cpp:23:2: warning: no newline at end of file
    

    Jetzt habe ich in der Doku von Id3 Gefunden das die GetText Funktion/Klasse was auch immer in GetText() : ID3_FieldImpl Steckt.
    http://id3lib.sourceforge.net/api/functions.html#index_g

    Aber leider bekomme ich das nicht Eingebunden wenn ich
    #include <ID3/FieldImpl.h> Findet er das nicht #include <FieldImpl.h> Das gleiche.Was muss ich nun machen damit er das FIndet?



  • ID3_Frame hat keine Methode namens GetText

    lies die doku mal genauer.



  • Kann mir denn Jemand sagen wo ich GetText() finden kann und wie ich es in meinen Code einbinden kann.Und noch eine Frage was Heißt eigentlich das ->



  • wenn ich das richtig sehe,
    brauchst du fuer gettext ID3_FieldImpl
    http://id3lib.sourceforge.net/api/class_i_d3___field_impl.html#a17
    (ich hab nur 2 sek. reingeschaut o.O).

    das -> ist eine abkuerzende schreibweise.
    du kannst damit auf methoden/attribute zugreifen.

    struct test
    {
      int a;
    };
    ...
    test t;
    t.a = 123;
    
    test* pt = new test;
    pt->a = 123; 
    //das ist ne abkuerzende schreibweise fuer (*pt).a = 123
    

    da pt ein zeiger auf test ist, musst du den zeiger zuerst
    dereferenzieren, bevor du auf attribute zugreifen kannst.
    der operator -> erledigt das in einem schritt.



  • Also wenn ich ein

    #include <field_impl.h>

    Hinzufüge dann bringt das nur das ich noch eine Fehlermeldung bekomme

    mp3.cpp:4:24: field_impl.h: No such file or directory
    


  • dann mach halt wie bei den anderen auch
    #include <id3/field_impl.h>
    und kauf dir maln gutes buch über c++!


Anmelden zum Antworten