一段C++的程序,大家帮忙看看为什么连接通不过?

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:22:30
下面的程序编译没有问题,就是连接不行运行不了。大家帮忙看看为什么,把原因写详细点,答得好会加30分。谢谢!

//xt5_7.cpp
#include <iostream.h>

class Cat{
private:
int age;
static int HowManyCats;
public:
Cat() { age=0; }
void SetHowMany(){
cout<<"Enter how many cats:";
cin>>HowManyCats;
}
void SetAge(){
cout<<"Enter the cat's age:";
cin>>age;
}
static int GetHowMany() { return HowManyCats; }
int GetAge() { return age; }
};

void main(void)
{
Cat Mimi;
Mimi.SetAge();
Mimi.SetHowMany();
Cat Huahua;
Huahua.SetAge();
Huahua.SetHowMany();
cout<<"Cat Mimi is "<<Mimi.GetAge()<<" years old."<<endl;
cout<<"Cat Huahua is "<<Huahua.GetAge()<<" year old."<<endl;
cout<<"Mimi said, there are "<<Mimi.Get

类中的静态变量得在类体外初始化,前面不要加static
class Cat{
...
};
int Cat::HowManyCats = 0;
int main()
{
...
}
静态数据成员的使用方法和注意事项如下:

1、静态数据成员在定义或说明时前面加关键字static。

2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:

<数据类型><类名>::<静态数据成员名>=<值>

这表明:

(1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。

(2) 初始化时不加该成员的访问权限控制符private,public等。

(3) 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。

3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。

4、引用静态数据成员时,采用如下格式:

<类名>::<静态成员名>

如果静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式来引用静态数据成员。

static全局变量必须定义,无论其是private或public.
应当将HowManyCats初始化,而不是等到方法SetHowMany里面才给其赋值.

将static int HowManyCats;一行改为static int HowManyCats=0;即可

补充:上面的方法有问题,的确应当在类外初始化,是我失误.