オブジェクト属性のポインタの使い方



  
  
  
  
  1. #include 
  2. using namespace std; 
  3.  
  4. /** 
  5.  *  1:  
  6.  */ 
  7.  
  8. class Point { 
  9. public
  10.     Point(int x, int y) { 
  11.         this->x = x; 
  12.         this->y = y; 
  13.     } 
  14.     int x; 
  15.     int y; 
  16. }; 
  17.  
  18. class Rectangle { 
  19. public
  20.     enum pointType { 
  21.         LT, RB 
  22.     }; 
  23.  
  24.     //  Rectangle  
  25.     Rectangle() { 
  26.     } 
  27.  
  28.     //  Rectangle  
  29.     ~Rectangle() { 
  30.         if (this->lt) { 
  31.             delete this->lt; 
  32.             this->lt = 0; 
  33.         } 
  34.         if (this->rb) { 
  35.             delete this->rb; 
  36.             this->rb = 0; 
  37.         } 
  38.     } 
  39.  
  40.     void setPoint(int pt, int x, int y) { 
  41.         switch (pt) { 
  42.         case LT: 
  43.             this->deletePoint(this->lt); 
  44.             this->lt = new Point(x, y); 
  45.             break
  46.         case RB: 
  47.             this->deletePoint(this->rb); 
  48.             this->rb = new Point(x, y); 
  49.             break
  50.         } 
  51.     } 
  52.  
  53.     int getArea() const { 
  54.         int width = 0; 
  55.         int height = 0; 
  56.         width = this->rb->x - this->lt->x; 
  57.         height = this->rb->y - this->lt->y; 
  58.         return width * height; 
  59.     } 
  60.  
  61. private
  62.     Point * lt; 
  63.     Point * rb; 
  64.  
  65.     void deletePoint(Point * point) { 
  66.         if (point) { 
  67.             delete point; 
  68.             point = 0; 
  69.         } 
  70.     } 
  71.  
  72. }; 
  73.  
  74.  
  75. #include 
  76. #include ../header/class.hpp 
  77. using namespace std; 
  78.  
  79. int main() { 
  80.     Rectangle * theRect = new Rectangle(); 
  81.     theRect->setPoint(theRect->LT, 0, 0); 
  82.     theRect->setPoint(theRect->RB, 10, 5); 
  83.     cout << theRect->getArea() << endl; 
  84.  
  85.     theRect->setPoint(theRect->RB, 10, 10); 
  86.     cout << theRect->getArea() << endl; 
  87.  
  88.     /* 
  89.     Rectangle theRect; 
  90.     theRect.setPoint(theRect.LT, 0, 0); 
  91.     theRect.setPoint(theRect.RB, 10, 5); 
  92.     cout << theRect.getArea() << endl; 
  93.     */ 
  94.     return 0;