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