2011|08|
2013|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|07|08|09|10|11|12|
2016|01|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|

2015-05-18 クラスの中でクラス(のインスタンス)を使う方法 [長年日記]

久々にC++でシミュレーションを組んでいます。

今、あるシステムのデバイス構成要素のクラス設計が完了したのですが、この段階になって、そのシステムを使っている会社のクラスの中に収納したくなりました。

しかし、今更、その会社のクラスの中に、デバイスのクラスを組み込むなんぞ、面倒なことはしたくありません。

そういえば、私、こんなに色々なプログラミングやってきたのに、未だ、「クラスの中にクラスを定義する」ということをやったことがなかったことに気がつきました。

今までは、全部作り直してきたようです。昔の私は根性があったようです。

少し調べてみたら、「インナークラス」という記載方法があるようですが、コンストラクタの定義を考えたら、面倒くさくなったので、ポインタで逃げることにしました。

こんな感じです。

class Water_Pipe
{
public:
	Water_Pipe(int lenght)  // 単位はメートル
	{
		max_length = lenght;
		max_array_count = lenght/2;  //秒速2メートル	で必要となるタイムスライス	
	
		for( int i = max_array_count-1; i >= 0; i--)  // パイプの初期化
			water_array[i] = 0;
	}
	
	double water_input_output(double volume_of_water)  
	{
		output_water = water_array[max_array_count-1];
	
		for( int i = max_array_count-1; i > 0; i--)
		{
			water_array[i] = water_array[i-1];
		}
	
		water_array[0] = volume_of_water;
	
		return output_water;
	}
	
private:
	int		max_length;
	int		max_array_count;
	double	output_water;
	double	water_array[20000];
};
	
class Water_Company
{
public:
	Water_Pipe 	*m_water_pipe;
}
	
int _tmain(int argc, _TCHAR* argv[])
{
	Water_Pipe	water_pipe1(1000); // 1000メートル
	Water_Company	water_company;
	
	water_company_A.m_water_pipe = &(water_pipe1);
	water_company_A.m_water_pipe->water_input_output(100);
}