ページ 11

クラスのデータ共有

Posted: 2008年3月02日(日) 22:13
by Nikol
こちらでは以前もお世話になったことがあります。
が、HNを忘れてしまいましたのでNikolと名乗らせていただきます。

質問なのですが、例えば以下のような配置

[メインプログラム]-->--[キャラクター管理クラス]
-->--[戦闘管理クラス]
-->--[マップ管理クラス]

そして以下の構造体データ(例)
char name;
char job;
int hp, mp;

この構造体データをキャラクター管理クラスが保持しているとして、
そのデータをメインプログラムで保持、
そしてそのほかのクラスで使用したいとおもっているのですが、
int型はreturnを駆使することでどうにかなるのですが、
char型はどのようにしたらよいのでしょうか?

また、もっと手軽に構造体を共有できる方法はないのでしょうか?
ご回答おねがいします。

Re:クラスのデータ共有

Posted: 2008年3月02日(日) 23:27
by 組木紙織
クラスという言葉を使っているのでC++で作っていると判断しました。
詳細がわからないので適当に組んでみました。

意識したのは以下の部分です。
>この構造体データをキャラクター管理クラスが保持しているとして、
>そのデータをメインプログラムで保持、
>そしてそのほかのクラスで使用したいとおもっているのですが、
#include <iostream>
struct Data
{
	char name; 
	char job; 
	int hp, mp; 
};

class Charactor
{
public:
	Data data;
	void setData(){
	 	data.name = 'A';
		data.job = 'b';
		data.hp = 3;
		data.mp =1;
	}
};

class War
{
public:
	Data *p_data;
	War(Data *data)
	{
	 	this->p_data = data;
	}
	void showData()
	{
	 	std::cout << "data.name: " << this->p_data->name << std::endl;
		std::cout << "data.job:  " << this->p_data->job	 << std::endl;
		std::cout << "data.hp:  " << this->p_data->hp	 << std::endl;
		std::cout << "data.mp:  " << this->p_data->mp	 << std::endl;
	}
};

int main()
{
	Charactor chara; 
	War war(&chara.data);
	
	chara.setData();
	war.showData();
};

Re:クラスのデータ共有

Posted: 2008年3月03日(月) 06:56
by Nikol
ご回答ありがとうございます。

なるほど、そういう手がありましたか。
参考にさせていただきます。

もうひとついいでしょうか?

その構造体が配列されているばあい
(ex) Data data[10];
どのようにしたらよいのでしょうか?

Re:クラスのデータ共有

Posted: 2008年3月03日(月) 08:40
by バグ
ポインタで渡している訳ですから、添え字の分だけアドレスをインクリメントすればいいと思います。