fork download
  1. #include <memory>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5. struct base {
  6. virtual void muu() = 0;
  7. };
  8.  
  9. struct monster1 : public base {
  10. virtual void muu() { std::cout << "muuuu\n"; }
  11. };
  12.  
  13. struct monster2 : public base {
  14. virtual void muu() { std::cout << "miau\n"; }
  15. };
  16.  
  17. int main() {
  18. std::vector< std::unique_ptr<base> > potworki;
  19. potworki.emplace_back(); // dodaje nowy element na koncu wektora
  20. potworki.back().reset(new monster1); // bierze ostatnio dodany element, za pomoca .reset ustawiasz wskaznik na nowo zrobiony obiekt
  21.  
  22. potworki.emplace_back(new monster2); // mozna tez tak, jako ze konstruktor unique_ptr moze przyjac pointer na element podklasy base
  23.  
  24. for(auto& potworek : potworki) {
  25. potworek->muu();
  26. }
  27. }
Success #stdin #stdout 0s 3028KB
stdin
Standard input is empty
stdout
muuuu
miau