[C++]スラスラわかるC++ プログラムをクラスで部品化する

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>

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です