fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. template <class T>
  6. class templateWithVector {
  7. public:
  8. std::vector<T*> vec;
  9.  
  10. T* getFromVector(unsigned int idx) const { return idx < vec.size() ? vec[idx] : nullptr; }
  11. };
  12.  
  13. class classBase {
  14. public:
  15. virtual std::ostream& doGet(std::ostream& s) const { return s; } // do nothing by default
  16. virtual ~classBase(){};
  17. };
  18. class bSpecifics {};
  19.  
  20. class B : public classBase, public templateWithVector<bSpecifics> {
  21. public:
  22. B() {
  23. for (int i = 0; i < 3; i++)
  24. vec.push_back(new bSpecifics());
  25. }
  26. virtual std::ostream& doGet(std::ostream& s) const override {
  27. return s << "B: " << getFromVector(1) << '\n';
  28. }
  29. };
  30.  
  31. class C : public classBase {
  32. };
  33.  
  34. int main() {
  35. classBase&& myB = B();
  36. myB.doGet(std::cout);
  37. classBase&& myC = C();
  38. myC.doGet(std::cout);
  39. }
Success #stdin #stdout 0s 4432KB
stdin
Standard input is empty
stdout
B: 0x55be8ec5dc60