Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 30th, 2012  |  syntax: None  |  size: 0.64 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Covariant virtual functions return type problem
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class Child1
  6. {
  7.     int i;
  8. };
  9.  
  10. class Child2 : public Child1
  11. {
  12.     int j;
  13. };
  14.  
  15. class Base1
  16. {
  17.  
  18. public:
  19.  
  20.     virtual Child1& getChildren()
  21.     {
  22.         cout << "Children1" << endl;
  23.         return children;
  24.     }
  25.  
  26. private:
  27.  
  28.     Child1 children;
  29. };
  30.  
  31. class Base2 : public Base1
  32. {
  33.  
  34. public:
  35.  
  36.     virtual Child2& getChildren()
  37.     {
  38.         cout << "Children2" << endl;
  39.         return children;
  40.     }
  41.  
  42. private:
  43.  
  44.     Child2 children;
  45. };
  46.        
  47. error C2555: 'Base2::getChildren': overriding virtual function return type differs and is not covariant from 'Base1::getChildren'