如何访问类对象的每个实例的静态变量值

时间:2017-03-25 11:33:48

标签: c++

#include <iostream>

using namespace std;

class Box {
   public:
      static int objectCount;
      // Constructor definition
      Box(double l = 2.0, double b = 2.0, double h = 2.0) {
         cout <<"Constructor called." << endl;
         length = l;
         breadth = b;
         height = h;
         // Increase every time object is created
         this->objectCount++;
      }

      double Volume() {
         return length * breadth * height;
      }

      static int getID()
      {
          return objectCount;
      }

   private:
      double length;     // Length of a box
      double breadth;    // Breadth of a box
      double height;     // Height of a box
};

// Initialize static member of class Box
int Box::objectCount = 0;

int main(void) {
   Box Box1(3.3, 1.2, 1.5);    // Declare box1
   Box Box2(8.5, 6.0, 2.0);    // Declare box2

   // Print total number of objects.
   cout << "Total objects: " << Box::objectCount << endl;
   cout << "Box1 ID: " << Box1.getID() << endl;
   cout << "Box2 ID: " << Box2.getID() << endl;

   return 0;
}

如何访问&#39; Box1&#39;的objectCount? &#39; Box2&#39;。 &#39; BOX1&#39;应该有一个objectCount为1而#Box42&#39;仍然是2.例如

打印:

  

构造函数调用。
  构造函数调用。
  总对象:2
  方框1 ID:2
  方框2 ID:2

而不是:

  

构造函数调用。
  构造函数调用。
  总对象:2
  方框1 ID:1
  方框2 ID:2

1 个答案:

答案 0 :(得分:2)

该课程只有一个objectCount。根据定义,这就是static类成员。

您需要做的是在类中添加一个非静态成员,并在构造函数中初始化它。

 static int objectCount;
 int my_objectCount;

  // Constructor definition
  Box(double l = 2.0, double b = 2.0, double h = 2.0)
     : my_objectCount(++objectCount)
  {
    // ...
  }

然后,my_objectCount对于第一个类实例为1,对于第二个实例为2,依此类推。