[C++]クラスの引数などで、変数名を指定することは可能ですか?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
PUMP
記事: 23
登録日時: 8年前

[C++]クラスの引数などで、変数名を指定することは可能ですか?

#1

投稿記事 by PUMP » 8年前

VC++ 2008 ExpressEditionで作っています、初心者です。
関数を作るときにintやstringなど、引数を決めれるのは知っているんですが
例えば引数に「player_x」と入れればplayer_xという変数がつくれるようにすることは可能ですか?

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#2

投稿記事 by みけCAT » 8年前

私には意味がよくわかりません。
具体例(コード)を出していただけますか?
オフトピック
変数をつくる…?コンパイラかインタプリタでも作るのかな…?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

PUMP
記事: 23
登録日時: 8年前

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#3

投稿記事 by PUMP » 8年前

変数をつくる じゃなくて 変数を宣言する ですね。ごめんなさい。

コード:

class Character {
public:
	Character(string name);
};
普通クラスはこんな感じで書いていくと思うんですが、ここでいう string name は引数が「文字列」ですよね。
語彙力のなさもあって説明しにくいんですが、これを「変数名になる文字列」にしたいのです。つまり

コード:

class Character {
public:
	Character(string name) {
		int name[] = {   //name(のとこに渡した引数)というint型の配列変数を作りたい
			//(ここでいろいろ処理して、nameの配列変数は全て初期化)
		};
	}
};
こういうことです。勿論これはエラーが出ます。
配列変数を初期化できていないのは一目瞭然なんですが、正確にはもっといろいろとややこしい処理が入ってくる予定です。


PUMP
記事: 23
登録日時: 8年前

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#5

投稿記事 by PUMP » 8年前

マップを自分で作ってみたいなと思いまして、自分なりに考えていたんですが
マップを変更するたびにいちいちマップロードするのも面倒くさいなと思いまして、一番最初に各ステージのマップデータを全て読み込もうと思ったんです。
int Map[Name][縦][横] の三次元配列だと、小さいステージの時は無駄なとこが大きいかなと思い、int MapName[縦][横] の二次元配列をいくつも作ることにして
練習も兼ねて関数作っちゃおうと考えた結果です。

hide

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#6

投稿記事 by hide » 8年前

だったらマップの名前をstringの変数に入れればいい話ですので、変数名にする意味は無いです。

hide

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#7

投稿記事 by hide » 8年前

あぁ違うな、マップすべて読みこむのが無駄だと思っているのですね。
だったら必要なマップだけ読めばいいので結局そんなやり方は不要です。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#8

投稿記事 by みけCAT » 8年前

マップを

コード:

std::vector<std::vector<int> >
で作って、

コード:

std::map<std::string, std::vector<std::vector<int> > >
にマップリストを格納する、というのはどうでしょうか?
オフトピック
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

PUMP
記事: 23
登録日時: 8年前

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#9

投稿記事 by PUMP » 8年前

>あぁ違うな、マップすべて読みこむのが無駄だと思っているのですね。
ピンとこないんですが、多分勘違いしてるかと思います。

例えば、 int Map[10][600][600] と言う配列変数を作ったとします。 ステージ0~9,最大縦サイズ0~599,最大横サイズ0~599 ということになります。
縦500,横500のステージ0を作るとしたら、Map[0][0~499][0~499]を使うことになります。
もっと小さくなり、縦10,横10のステージ1を作るとしたら、 Map[1][0~9][0~9]しか使わないわけです。

おおげさな話なんですが、このステージ1の場合 Map[1][10~599][10~599] は使わないわけですから、それは無駄だと考えてるのです。それよりは
int Map_0[500][500]
int Map_1[10][10]
という具合に宣言していった方がいいんじゃないか?という話。
何度も書くのが面倒くさいので、練習も兼ねてクラス作ろうとなったところです。


>...にマップリストを格納する、というのはどうでしょうか?
勉強してきます。

hide

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#10

投稿記事 by hide » 8年前

動的に作ればいいの話です。
配列などををnewしましょう

PUMP
記事: 23
登録日時: 8年前

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#11

投稿記事 by PUMP » 8年前

動的配列難しくてやっとざっくり分かったというレベルなんですが
動的配列を使う=無駄なメモリの使用がなくなる という認識で大丈夫ですよね?

ありがとうございます、勉強しながら使っていこうと思います。

hide

Re: [C++]クラスの引数などで、変数名を指定することは可能ですか?

#12

投稿記事 by hide » 8年前

動的配列を使う=無駄なメモリの使用がなくなる という認識で大丈夫ですよね?
ちょうどの大きさの配列を作って使えば無駄は減りますね。認識としては問題ないでしょう。
それと、問題が解決した場合は返信画面の送信ボタンのとなりの解決!にチェックを入れて投稿してくださいね。

閉鎖

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