Ich versuche, neue Objekte zu erstellen und sie mit boost :: bind zu einer Liste von Objekten hinzuzufügen. Zum Beispiel.
%Vor%Dies scheint nicht zu funktionieren. Gibt es eine Möglichkeit, einen Konstruktor mit boost :: bind zu verwenden, oder sollte ich eine andere Methode ausprobieren?
Wenn Stuff::some_member
ist int
und Object
hat eine nicht-explizite ctor nimmt eine int
, sollte dies funktionieren:
Andernfalls könnten Sie boost :: lambda :: verwenden. Konstruktor
Éric's Link sagt zum Teil "Es ist nicht möglich, die Adresse eines Konstruktors zu verwenden, daher können Konstruktoren nicht als Zielfunktionen in Bind-Ausdrücken verwendet werden." Was ich also versuchte, war unmöglich.
Ich habe es geschafft, indem ich eine Funktion erstellt habe:
%Vor%und mit Object_factory, wo ich versuchte, den Object-Konstruktor zu verwenden.
Es hängt davon ab, was a::some_member
zurückgibt - wenn es ein Object
ist, dann sollten Sie das Ergebnis nicht in ein Object
ctor umbrechen müssen - es wurde bereits erstellt. Wenn die Routine kein Object
zurückgibt, müssen Sie wahrscheinlich das Ergebnis etwas massieren, was Sie mit boost::bind
herausfinden könnten, aber eine Dienstprogrammfunktion kann den Code lesbarer halten.
In jedem Fall würde mehr Code helfen, insbesondere die Typinstanz von a
und Object
.
Tags und Links c++ constructor boost bind