fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class A
  5. {
  6. public:
  7. static std::string ClassName;
  8.  
  9. virtual void print() { cout << ClassName << endl; }
  10. };
  11.  
  12. class B
  13. : public A
  14. {
  15. };
  16.  
  17. class C
  18. : public B
  19. {
  20. };
  21.  
  22. string A::ClassName = "Klasa A";
  23. string B::ClassName = "Klasa B";
  24. string C::ClassName = "Klasa C";
  25.  
  26. int main() {
  27.  
  28. A a;
  29. B b;
  30. C c;
  31. a.print();
  32. b.print();
  33. c.print();
  34. return 0;
  35. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:23:11: error: ISO C++ does not permit 'A::ClassName' to be defined as 'B::ClassName' [-fpermissive]
 string B::ClassName = "Klasa B";
           ^
prog.cpp:23:11: error: redefinition of 'std::string A::ClassName'
prog.cpp:22:8: note: 'std::string A::ClassName' previously declared here
 string A::ClassName = "Klasa A";
        ^
prog.cpp:24:11: error: ISO C++ does not permit 'A::ClassName' to be defined as 'C::ClassName' [-fpermissive]
 string C::ClassName = "Klasa C";
           ^
prog.cpp:24:11: error: redefinition of 'std::string A::ClassName'
prog.cpp:22:8: note: 'std::string A::ClassName' previously declared here
 string A::ClassName = "Klasa A";
        ^
stdout
Standard output is empty