fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class B;
  5. class A
  6. {
  7. public:
  8. A(int ax):x(ax) {}
  9. A* Clone() const
  10. {
  11. return new A(x);
  12. }
  13. /*
  14.   B operator + (A const &v2) const
  15.   {
  16.   A *pv=v2.Clone();
  17.   pv->x+=x;
  18.   return B(pv);
  19.   }
  20.   */
  21. friend ostream& operator << (ostream &os, A const &v); /*
  22.   {
  23.   os << v.x;
  24.   return os;
  25.   }*/
  26. protected:
  27. int x;
  28. };
  29.  
  30. ostream& operator << (ostream &os, A const &v)
  31. {
  32. os << v.x;
  33. return os;
  34. }
  35.  
  36.  
  37. class B
  38. {
  39. public:
  40. B (A *p);
  41. ~B();
  42. operator A const () const;
  43. operator A ();
  44. private:
  45. A *y;
  46. };
  47.  
  48.  
  49. B::B (A *p):y(p) {}
  50. B::~B() {delete y;}
  51. B::operator A const () const {return *y;}
  52. B::operator A () {return *y;}
  53.  
  54. int main()
  55. {
  56. A v(4),v1(5);
  57. B b(&v);
  58. cout << b;
  59. }
  60.  
Runtime error #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
Standard output is empty