クラスのデータ共有

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Nikol

クラスのデータ共有

#1

投稿記事 by Nikol » 17年前

こちらでは以前もお世話になったことがあります。
が、HNを忘れてしまいましたのでNikolと名乗らせていただきます。

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

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

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

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

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

組木紙織

Re:クラスのデータ共有

#2

投稿記事 by 組木紙織 » 17年前

クラスという言葉を使っているので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();
};

Nikol

Re:クラスのデータ共有

#3

投稿記事 by Nikol » 17年前

ご回答ありがとうございます。

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

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

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

バグ

Re:クラスのデータ共有

#4

投稿記事 by バグ » 17年前

ポインタで渡している訳ですから、添え字の分だけアドレスをインクリメントすればいいと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る