HealthChecker.cpp
#include <iostream>
#include <string>
using namespace std;
#include "HealthChecker.h"
// 標準BMIを表すメンバ定数の実体
const int HealthChecker::STD_BMI = 22;
// BMIを返すメンバ関数の実装
double HealthChecker::getBmi() {
// まだBMIが計算されていなかったら計算する
if (this->bmi == 0) {
double mHeight = this->height / 100;
this->bmi = this->weight / mHeight / mHeight;
}
// BMIを返す
return this->bmi;
}
// コンストラクタの実装
HealthChecker::HealthChecker(string name, double height, double weight) {
// メンバ変数に初期値を設定する
this->name = name;
this->height = height;
this->weight = weight;
this->bmi = 0;
}
// 氏名を返すメンバ関数の実装
string HealthChecker::getName() {
return this->name;
}
// 標準BMIを返すメンバ関数の実装
int HealthChecker::getStdBmi() {
return HealthChecker::STD_BMI;
}
// 標準体重を返すメンバ関数の実装
double HealthChecker::getStdWeight() {
double mHeight = this->height / 100;
return HealthChecker::STD_BMI * mHeight * mHeight;
}
HealthChecker.h
class HealthChecker {
private:
static const int STD_BMI; // 標準BMIを表すメンバ定数
string name; // 氏名を格納するメンバ変数
double height; // 身長を格納するメンバ変数
double weight; // 体重を格納するメンバ変数
double bmi; // BMIを格納するメンバ変数
public:
static int getStdBmi(); // 標準BMIを返すメンバ関数
double getStdWeight(); // 標準体重を返すメンバ関数
double getBmi(); // BMIを返すメンバ関数
string getName(); // 氏名を返すメンバ関数
HealthChecker(string name, double height, double weight); // コンストラクタ
};
list5_6.cpp
#include <iostream>
#include <string>
using namespace std;
#include "HealthChecker.h"
int main() {
// HealthCheckerクラスのインスタンスを生成する
HealthChecker yamada("山田一郎", 170, 67.5);
// BMIの値を表示する
cout << "BMIは、" << yamada.getBmi() << "です。" << endl;
return 0;
}
cd_samples5_6_class.cmd
C:\samples\chapter05>cd C:\samples\chapter05\
C:\samples\chapter05>g++ list5_6.cpp HealthChecker.cpp -o list5_6.exe
C:\samples\chapter05>list5_6.exe
BMIは、23.3564です。
C:\samples\chapter05>cmd /k
C:\samples\chapter05>