fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <memory>
  4.  
  5. using namespace std;
  6.  
  7. class Object {
  8. public:
  9. virtual void input(istream& is) {
  10. cout << "input from base"<<endl;
  11. }
  12. };
  13. class Derived : public Object {
  14. public:
  15. void input (istream& is) override {
  16. cout << "input from derived"<<endl;
  17. }
  18. };
  19.  
  20. std::vector<std::shared_ptr<Object>> arr;
  21.  
  22. bool InputArray(std::shared_ptr<Object> obj) {
  23. //...
  24. obj->input(cin);
  25. arr.push_back(obj); // no need for nelem. Use arr.size() instead
  26. return true;
  27. }
  28.  
  29. int main() {
  30. shared_ptr<Object> p1 = make_shared<Object>(), p2 = make_shared<Derived>();
  31. InputArray (p1);
  32. InputArray (p2);
  33. return 0;
  34. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
input from base
input from derived