練習問題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 <iostream>
 
//引数なしコンストラクタ
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 <iostream>
#include <string>
 
#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;
 
}