81ページのオーバーロードの説明で書かれているプログラムがうまくメイクできません
#include<iostream>
#include<math.h>
using namespace std;
class CarNavi{
int points_x[50]; //地点のX座標(最大50地点)
int points_y[50]; //地点のY座標(最大50地点)
int pt_num; //登録した地点の数
float jisoku;
public:
CarNavi() {
pt_num = 0;
}
CarNavi(float j){ //時速を引数に取るコンストラクタ
jisoku = j;
pt_num = 0;
}
int add(int, int); //追加関数のプロトタイプ宣言
void listup(); //地点の一覧表示関数のプロトタイプ宣言
float getkyori(); //距離を返す関数の宣言
float getjikan(); //経過時間を返す関数の宣言
void getjikan(float j){ //時速を引数に取るgetjikan関数
jisoku = j;
return(getjikan());
}
void setjisoku(float j){ //時速を設定する関数
jisoku = j;
}
};
//地点の一覧表示関数
void CarNavi::listup(){
for(int i=0; i<pt_num; i=i+1){
cout << "地点" << i << "=";
cout << points_x[i] << ":" <<points_y[i] << endl;
}
}
//追加関数の定義
int CarNavi::add(int x, int y){
if(pt_num>=50) return(-1); //pt_numが50以上なら追加しない
points_x[pt_num] = x;
points_y[pt_num] = y;
pt_num = pt_num + 1; //pt_numを1増やす
return(pt_num);
}
//距離を返す関数の定義
float CarNavi::getkyori(){
float kyori=0;
for(int i=0; i<pt_num-1; i=i+1){
int dx = points_x[i+1]-points_x[i];
int dy = points_y[i+1]-points_y[i];
kyori = kyori + sqrt(dx*dx + dy*dy);
}
return kyori;
}
//経過時間を返す関数の宣言
float CarNavi::getjikan(){
float kyori = getkyori();
return(kyori/jisoku);
}
int main(){
CarNavi cn(15); //CarNavi型変数cnを宣言、引数付きコンストラクタを使用
cn.add(1,1); //add関数を呼び出して地点(1,1)を追加
cn.add(5,3);
cn.add(8,4);
cn.listup(); //listup関数の呼び出し
// cn.setjisoku(15);
cout << cn.getkyori() << "km" << endl;
cout << cn.getjikan() << "時間" << endl;
cout << cn.getjikan(10) << "時間" << endl;
//引数付きgetjikanの呼び出し
}