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);
E 'possibile cambiare il visitatore in modo tale che esso riceve i dati aggiuntivi come segue:boost :: static_visitor con più argomenti
class Append: public boost::static_visitor<>
{
public:
void operator()(int, const std::string&)
{}
void operator()(double, const std::string&)
{}
};
questa stringa valore cambia durante la vita dell'oggetto Append. Passare la stringa tramite il costruttore non è un'opzione in questo caso.
Perché non è un'opzione? È possibile creare un altro oggetto Aggiungi con stringhe diverse nel caso in cui le modifiche. – kennytm
A che ora cambierà il valore della stringa? Non vedo perché non può essere fatto nemmeno con un costruttore. – Mene
@KennyTM La classe Append accetta un numero di dipendenze tramite il suo costruttore. Se ricostruisco l'oggetto Append all'interno della mia classe, allora questa classe dovrà anche prendere tutte le dipendenze usate da Append tramite il suo costruttore. Speravo che la mia classe prendesse semplicemente un oggetto Append tramite il suo costruttore. – Baz