während der laufzeit variable zu einer liste hinzufügen



  • neues problem:

    class a
    {
    private:
    vector<string> a;
    public:
    void setString(string value)
    {
        a.push_back(value);
    };
    };
    

    dabei bekomme ich die fehlermeldung auf ein unaufgelöstes externes symbol -> was mache ich falsch?



  • wenn du mit dem gcc kompilierst, dann benutz den befehl g++ statt gcc. Bei anderen Compilern wohl irgendwo in den Einstellungen von C auf C++ umstellen.



  • nein daran lag es nicht. is schon auf c++ eingestellt. ich benutze btw visual studio 2k5



  • kann es sein, dass class a

    und vector a sich gegenseitig nicht vertragen?



  • wieso sollten sie



  • Hallo,

    TravisG schrieb:

    dabei bekomme ich die fehlermeldung auf ein unaufgelöstes externes symbol -> was mache ich falsch?

    sag uns wo (Zeile) die Fehlermeldung auftritt und wie sie genau lautet.

    k.m.w schrieb:

    kann es sein, dass class a

    und vector a sich gegenseitig nicht vertragen?

    TravisG schrieb:

    wieso sollten sie

    Weil sie gleich heißen?!?

    However, geht das?:

    #include <vector>
    #include <string>
    
    class Foo {
      std::vector<std::string> vec;
    public:
      void setString(const std::string &s) {
        vec.push_back(s);
      }
    };
    

    MfG

    GPC



  • der compiler zeigt _keine_ zeile an und der fehler tritt beim linken auf

    dass sie gleich heißen war nur ein versehen, das echte problem ensteht mit nem programm wo sie unterschiedlich heissen. nehmt einfach ma an das der vector a jetzt b heisst ^^

    edit: ja es geht

    2.edit es scheint was damit zu tun zu haben das die implementierung in ner anderen datei steht als die deklaration der klasse. ich ma bissel rumprobieren



  • 2.edit es scheint was damit zu tun zu haben das die implementierung in ner anderen datei steht als die definition der klasse. ich ma bissel rumprobieren

    Definition und Implementation sind das selbe.

    Hier ein Beispiel wie es aussehen kann:

    //foo.hpp
    #include <vector>
    #include <string>
    
    //Deklaration von Klasse Foo mitsamt member
    class Foo {
      std::vector<std::string> vec;
    public:
      void setString(const std::string &s);
    };
    
    //foo.cpp
    #include "foo.hpp"
    
    //Definition(Implementation) der Methode Foo::setString
    void Foo::setString(const std::string &s) {
      vec.push_back(s);
    };
    

    MfG

    GPC



  • exakt so sieht es bei mir aus nur aber der fehler kommt trotzdem.

    das ist echt zum verzweifeln



  • Kompilierst du die foo.cpp auch mit? Welchen Compiler benutzt du? Hoffentlich einen C++ Compiler, oder?



  • ja, der beweis ist dass in der dazugehörigen *.cpp auch andere implementierungen stehen die allesamt funktionieren

    edit: übers forum is anstrengend ^^ bist du im irc?


Anmelden zum Antworten