fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. enum class ClassIds : int {
  5. DerivedID
  6. };
  7.  
  8. struct Interface {
  9. virtual void foo() = 0;
  10. virtual int bar() = 0;
  11. };
  12.  
  13.  
  14. template<class T>
  15. class Base : public Interface {
  16. public:
  17. int getType() const { return getTypeId(); }
  18. static int getTypeId() { return T::ClassId; }
  19. };
  20.  
  21. class Derived : public Base<Derived> {
  22. public:
  23. static const int ClassId = (int)ClassIds::DerivedID;
  24.  
  25. virtual void foo() { }
  26. virtual int bar() { return 1; }
  27.  
  28. };
  29.  
  30. int main() {
  31. Derived der;
  32. Interface* iface = &der;
  33. iface->foo();
  34. iface->bar();
  35.  
  36. return 0;
  37. }
Success #stdin #stdout 0s 3292KB
stdin
Standard input is empty
stdout
Standard output is empty