Mam dwa powiązane pytania dotyczące wykorzystania dystrybucji wewnątrz klas.Dystrybucja jako członek klasy w C++
Czy istnieje jakiś rodzaj dystrybucji bazowej w C++, w celu korzystania z dystrybucji jako członka klasy bez znajomości których dystrybucja będzie? Nie mogę korzystać z szablonów (patrz pytanie 2)
class Foo{ private: // could by any distribution std::base_distribution dist_; };
mam inną klasę
Bar
które powinny mieć wektorFoo
jako prywatny członka (std::vector<Foo>
). Problem polega na tym, że jeśliFoo
używa szablonów, to nie jest możliwe posiadanie wektora różnych argumentów szablonu, który jest dokładnie tym, co chcę mieć.class Bar { private: std::vector<Foo> foo_; };
boost::variant
nie pomaga, bo nie wiem, rodzaj dystrybucji. Więc to (na przykład) nie jest to możliwe w moim przypadku:
class Bar{
private:
boost::variant<std::normal_distribution<>, std::uniform_real_distribution<> > dists_;
};
Jeśli potrzebujesz tylko jednego rodzaju silnika losowego, funkcja 'std :: function 'może być wystarczająca. –