Boost: Shared_ptr und list ?



  • Abend, ich bin momentan dabei einen Server OOP mäßig zu entwickeln.
    Nun will ich das meine aktuellen Verbindungen von einer Klasse aufgebaut werden, in eine Liste zu Speichern. Sprich ich möchte eine Klasse in einer Liste speichern und dann auf Sie zugreifen.
    Kommen wir nun zu meinem Problem, unzwar werden in der Liste die shared_ptr abgespeichert, Sie werden benutzt um von der Hauptklasse auf die Verbindung zu zugreifen und dann funktionen aufrufen.

    Hier nur das Prinzip:

    class Verbindung : public enable_shared_from_this<Verbindung>
    {
    typename boost::shared_ptr<Verbindung> pointer;
    
    static pointer create(boost::asio::io_service& io_service)
    {
     return pointer(new Verbindung(io_service)); //Hier wird ein shared_ptr der auf die Klasse Verbindung zeigt zurückgegeben, sodass man aus der Serverklasse auf die Verbindung zugreifen kann.
    }
    
    }
    
    class Server
    {
    public:
    void func1()
    {
      Verbindung::pointer new_room = Verbindung::create(acceptor_.get_io_service());
      foo.push_back(new_room);
    }
    
    std::list<Verbindung::pointer> give_me()
    {
    return foo;
    }
    
    private:
    std::list<Verbindung::pointer> foo;
    }
    

    Und jetzt wollte ich die Funktion "give_me" von der main aus aufrufen um die Liste dort abzuspeichern und dann mit einem Iterator der auf diese Liste zeigt, auf die Elemente der Klasse Verbindung zugreifen, sprich "Main->Server->Verbindung". Also ungefähr so hab ich mir das vorgestellt, nur mir sagt er das er die Funktionen der Klasse Verbindung, die von der main aus aufgerufen wurden,keine Elemente des boost::shared_ptr<T> sind.
    Ich hoffe ihr könnt es verstehen... ich will nur Verbindungen von einer Klasse in eine Liste packen und auf diese dann wieder zugreifen.

    Danke.



  • Wie lautet die exakte Fehlermeldung des Compilers? Wie sieht der Aufruf in der main Funktion aus? Und wird zwar dein Problem nicht ändern aber deine give_me Funktion soll doch bestimmt eine Referenz auf die Liste zurückgeben?


Anmelden zum Antworten