fork(1) 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) {
  11. if (idx < vec.size())
  12. return vec.at(idx);
  13. return nullptr;
  14. }
  15. };
  16.  
  17. class classBase {
  18. protected:
  19. virtual ~classBase() {};
  20. };
  21. class bSpecifics{};
  22.  
  23. class B : public classBase, public templateWithVector<bSpecifics> {
  24. public:
  25. B() {
  26. for (int i = 0; i < 3; i++)
  27. vec.push_back(new bSpecifics());
  28. }
  29. };
  30.  
  31. class C: public templateWithVector<bSpecifics>
  32. {
  33. };
  34.  
  35. int main() {
  36. {
  37. classBase *myB = new B();
  38. templateWithVector<bSpecifics> *p = dynamic_cast<templateWithVector<bSpecifics>*>(myB);
  39. if (p != nullptr)
  40. cout << "B:" << p->getFromVector(1) << endl;
  41. }
  42. {
  43. templateWithVector<bSpecifics> *myC = new C();
  44. templateWithVector<bSpecifics> *p = dynamic_cast<templateWithVector<bSpecifics>*>(myC);
  45. if (p != nullptr)
  46. cout << "C:" << p->getFromVector(1) << endl;
  47. }
  48.  
  49. return 0;
  50. }
Success #stdin #stdout 0s 4396KB
stdin
Standard input is empty
stdout
B:0x5557264f7c90
C:0