boost::signal non-const connect aber const disconnect?



  • Hi,

    ich nutze boost::signal gerade, um eine Memberfunktion eines Objekts zu connecten. Beim Connect habe ich non-const-Zugriff, der connect klappt also auch.

    Der disconnect findet aber an anderer Stelle statt und dort habe ich nur const-Zugriff auf das Objekt. (Ich disconnecte ebenfalls via bind, ich merke mir die connection nicht, weil die nichts im Objekt selbst verloren hat und ich keine Lust habe noch einen Parallelcontainer mit Objekt -> Connection zu verwalten) Im Grunde genommen brauchst boost ja auch gar nicht Schreibzugriff, ABER wenn ich als zweiten Parameter vom bind (also Objektzeiger) ein Objekt mit demselben Typ in const angebe, dann matcht er das nicht und disconnected nicht. num_slots bleibt auch gleich.

    Einfacher Workaround, der für mich gerade keine Nachteile zu haben scheint, ist für diesen Fall einfach mit const_cast zu arbeiten, es geht ja nur darum, dass boost das Mapping findet.

    Ist das in Ordnung? Connection halten ginge auch, aber ach... irgendwie ist es umständlich das für eine Menge von Objekten abzulegen.

    Beste Grüße 🙂


Log in to reply