====== 練習問題1(模範)解答 ====== ==== cVec2.h ==== #pragma once //2次元のベクトルを表すcVec2クラスを作る //プライベートメンバ //メンバ変数 //実数で(x, y)座標 メンバ変数らしく宣言 //パブリックメンバ: //コンストラクタを //引数なし //x, yを引数でもち、座標を初期化するもの //メンバ関数(戻り値と引数は考えて) //セッター、ゲッター //メンバをプリントする printVec //ベクトルのスカラー倍を返す nmulVec関数 //ベクトル同士の足し算を返す nplusVec関数 //内積を計算して返す iProduct関数 //ベクトルを座標とみなして2つのベクトルの距離を計算して返すメンバ関数 //引数は、もう一つのベクトル(引数は何型?)、自分の位置と、7 //引数で受け取った位置の距離を返す(型は何が適切?) class cVec2 { private: float mx, my; public: //コンストラクタ cVec2();//引数なし cVec2(float _x, float _y);//引数あり //セッターの皆さん //x,yの値を引数でもらってきて //mx,myを初期化 void setXY(float _x, float _y); //引数のcVec2のmx,myで //自分のmx,myを初期化 void setXY(const cVec2& _p); //_xを引数でもらって //mxだけを初期化 void setX(float _x); //_yを引数でもらって //myだけを初期化 void setY(float _y); //getterの皆さん //mxの値だけゲットするgetter float getX() const; //myの値だけゲットするgetter float getY() const; //cVec2型でmx,myをマルっとゲットするgetter cVec2 getPoint(); //自分のmx,myの値を出力する関数 void printVec(); cVec2 nmulVec(float _n); cVec2 nplusVec(const cVec2& _v); float iProduct(const cVec2& _v); float clacDistancde(const cVec2& _v); }; ==== cVec2.cpp ==== #include "cVec2.h" #include //引数なしコンストラクタ cVec2::cVec2() { this->mx = 0.0; this->my = 0.0; } //引数ありコンストラクタ cVec2::cVec2(float _x, float _y) { this->mx = _x; this->my = _y; } //引数_x, _yをもらってきて //my,myに代入するsetter void cVec2::setXY(float _x, float _y) { this->mx = _x; this->my = _y; } //mxだけ代入するsetter void cVec2::setX(float _x) { this->mx = _x; } //myだけ代入するsetter void cVec2::setY(float _y) { this->my = _y; } void cVec2::setXY(const cVec2 &_p) { *this = _p; //this->mx = _p.mx; //this->my = _p.my; } //ゲッターの皆さん //mxだけゲットするgetter float cVec2::getX() const { return(this->mx); } //ゲッターの皆さん //myだけゲットするgetter float cVec2::getY() const { return(this->my); } //ゲッターの皆さん //cVec2型でまるっと値をゲットするgetter cVec2 cVec2::getPoint() { return(*this); } void cVec2::printVec() { std::cout << "(" << this->mx << ", " << this->my << ")"; } ==== theMain.cpp ==== #include #include #include "cVec2.h" int main() { using std::cout; using std::endl; cVec2 p1(1.0, 0.0), p2(2.5, 2.1); cout << "p1(x, y) = "; p1.printVec(); cout << endl; cout << "p2(x, y) = "; p2.printVec(); cout << endl; }