c++ 做一个类数组 各种错误

2025-05-17 16:40:16
推荐回答(1个)
回答1:

#include 
#include 

using namespace std;

#define MAX_SIZE 10

class Person {
private :
char m_name[30];
int m_age;
int m_height;
int m_weight;
static int numOfObj;   // 类对象数量
static int sumOfAge;   // 年龄和
static int sumOfHeight;// 身高和
static int sumOfWeight;// 体重和
public :
Person() { }
Person(char name[],int age,int height,int weight);
void get();
void show();
static int getObjs() { return numOfObj; }
static double getAvrAge() { return 1.0 * sumOfAge / numOfObj; }
static double getAvrHeight() { return 1.0 * sumOfHeight / numOfObj; }
static double getAvrWeight() { return 1.0 * sumOfWeight / numOfObj; }
};

Person::Person(char name[],int age,int height,int weight) {
strcpy(m_name,name);
m_age = age;
m_height = height;
m_weight = weight;
++numOfObj;
sumOfAge += age;
sumOfHeight += height;
sumOfWeight += weight;
}

void Person::get() {
cout << "请输入姓名 年龄 身高 体重\n";
cin >> m_name;
cin >> m_age;
cin >> m_height;
cin >> m_weight;
++numOfObj;
sumOfAge += m_age;
sumOfHeight += m_height;
sumOfWeight += m_weight;
}

void Person::show() {
cout << m_name << "," << m_age << "," << m_height << "," << m_weight << endl;
}

// 在这里给类的每个静态数据成员初始化
int Person::numOfObj = 0;
int Person::sumOfAge = 0;
int Person::sumOfHeight = 0;
int Person::sumOfWeight = 0;

int main() {
Person member[MAX_SIZE]; // 调用默认构造函数声明一个数组
cout << "Please input the count of people\n";
int num;
cin >> num;
for(int i = 0; i < num && i < MAX_SIZE;i++)
member[i].get();
for(i = 0; i < num && i < MAX_SIZE; ++i)
member[i].show();
cout << "Average age : " << Person::getAvrAge() << endl;
cout << "Average height : " << Person::getAvrHeight() << endl;
cout << "Average weight : " << Person::getAvrWeight() << endl;
return 0;
}