c++;-计算类的实例化数 我有一个简单的C++例子,我试图计算一个类的实例数。我是基于一个旧的Java示例,我不明白为什么这不起作用。我只尝试访问类的静态成员,但编译失败

c++;-计算类的实例化数 我有一个简单的C++例子,我试图计算一个类的实例数。我是基于一个旧的Java示例,我不明白为什么这不起作用。我只尝试访问类的静态成员,但编译失败,java,c++,Java,C++,为什么我的默认构造函数会导致编译错误,以及我试图创建一个返回静态成员变量的“静态”函数 我试图在一个类中创建一个函数,该函数可以像全局函数一样调用,而不需要像传统的C函数那样在类外部声明它 多谢各位 代码列表 编辑 这是我在使用此处的建议后的最终(工作)代码清单,以及: #包括 使用名称空间std; 类MyClass{ 公众: MyClass(); 静态内模; 静态int getMyInt(); }; int MyClass::iMyInt=0; MyClass::MyClass(){ //

为什么我的默认构造函数会导致编译错误,以及我试图创建一个返回静态成员变量的“静态”函数

我试图在一个类中创建一个函数,该函数可以像全局函数一样调用,而不需要像传统的C函数那样在类外部声明它

多谢各位

代码列表


编辑


这是我在使用此处的建议后的最终(工作)代码清单,以及:

#包括
使用名称空间std;
类MyClass{
公众:
MyClass();
静态内模;
静态int getMyInt();
};
int MyClass::iMyInt=0;
MyClass::MyClass(){
//this.iMyInt=0;

cout静态方法无法访问
,因为它们不知道类中存在的对象。 改变


对于第一个错误,您没有在类中声明构造函数。您必须在类中声明构造函数

class MyClass {
   public:
      MyClass();                // Declare the consructor
      static int iMyInt;
      static int getMyInt();
};
对于第二个问题,在定义函数时不包括static关键字

static int MyClass::getMyInt() {
   return iMyInt;
}
换成

int MyClass::getMyInt() {
   return iMyInt;
}
最后,除了声明静态数据成员之外,还需要定义
iMyInt
静态数据成员:

int MyClass::iMyInt = 0;
请注意,这里也没有
静态

示例代码:

#include <iostream>
using namespace std;

class MyClass {
  public:
    MyClass()
    {
      instances++;
      showInstanceCount();
    }

    virtual ~MyClass()
    {
      instances--;
      showInstanceCount();
    }

    static int getInstanceCount()
    {
      return instances;
    }

    static void showInstanceCount()
    {
      cout << "MyClass instance count: " << instances << endl;
    }

    static int instances;
};

int MyClass::instances = 0;

int main()
{
  { MyClass a, b, c; }
  return 0;
}
class MyClass {
   public:
      MyClass();                // Declare the consructor
      static int iMyInt;
      static int getMyInt();
};
static int MyClass::getMyInt() {
   return iMyInt;
}
int MyClass::getMyInt() {
   return iMyInt;
}
int MyClass::iMyInt = 0;
#include <iostream>
using namespace std;

class MyClass {
  public:
    MyClass()
    {
      instances++;
      showInstanceCount();
    }

    virtual ~MyClass()
    {
      instances--;
      showInstanceCount();
    }

    static int getInstanceCount()
    {
      return instances;
    }

    static void showInstanceCount()
    {
      cout << "MyClass instance count: " << instances << endl;
    }

    static int instances;
};

int MyClass::instances = 0;

int main()
{
  { MyClass a, b, c; }
  return 0;
}
MyClass instance count: 1
MyClass instance count: 2
MyClass instance count: 3
MyClass instance count: 2
MyClass instance count: 1
MyClass instance count: 0