typedef boost::variant<int, double> Type;
class Append: public boost::static_visitor<>
{
public:
void operator()(int)
{}
void operator()(double)
{}
};
Type type(1.2);
Visitor visitor;
boost::apply_visitor(visitor, type);
Ist es möglich, den Besucher so zu ändern, dass sie zusätzliche Daten erhält, wie folgt:boost :: static_visitor mit mehreren Argumenten
class Append: public boost::static_visitor<>
{
public:
void operator()(int, const std::string&)
{}
void operator()(double, const std::string&)
{}
};
Dieser String-Wert ändert sich während der Lebensdauer des Objekts anhängen. Das Übergeben der Zeichenfolge über den Konstruktor ist in diesem Fall keine Option.
Warum ist das keine Option? Sie könnten ein anderes Append-Objekt mit anderen Zeichenfolgen erstellen, falls sich das ändert. – kennytm
Zu welcher Zeit ändert sich der String-Wert? Ich verstehe nicht, warum das mit einem Konstruktor auch nicht gemacht werden kann. – Mene
@KennyTM Die Append-Klasse nimmt über ihren Konstruktor eine Reihe von Abhängigkeiten auf. Wenn ich das Append-Objekt innerhalb meiner Klasse rekonstruiere, dann muss diese Klasse auch alle Abhängigkeiten übernehmen, die von Append über ihren Konstruktor verwendet werden. Ich hatte gehofft, dass meine Klasse einfach über ihren Konstruktor ein Append-Objekt aufnehmen würde. – Baz