質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

7275閲覧

オブジェクト名を変数名で指定したい!

testman0418

総合スコア13

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2018/12/09 01:27

編集2018/12/09 04:55

前提・実現したいこと

オブジェクト名を変数名で指定したいと思っています。
例えば、Button1, Button2, ~ Button10 などの複数のオブジェクトを
for文で連番処理したいと考えています。

そのため、変数名に"Button1"として数字の部分を増加させることで実現したいのですが、
そのようなことは可能でしょうか?

編集箇所

皆さん、ご回答ありがとうございます。

オブジェクトの配列で管理すればよいとのことでしたが、
私の環境では、少し厳しいようです。

また、環境を詳しく記載し直して、質問させていただきます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

連番で変数名つけるぐらいなら
最初から配列等で管理しましょう

投稿2018/12/09 01:33

ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

配列では不都合があるのでしょうか?

投稿2018/12/09 01:32

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

testman0418

2018/12/09 01:35

オブジェクト名(button1).〇〇という処理を 変数名(btn = "button1").〇〇として実行したいのですが、それは配列で可能でしょうか?
guest

0

既に回答されているように、連番処理でよいのならオブジェクトの配列を使うのが良いと思います。

"button1","button2","apple","orange"....というように様々な名前をもつオブジェクトを名前で扱いたいのであれば、"名前"と"オブジェクト配列のインデックス"のmapと、オブジェクトの配列の組み合わせが良いと思います。

// オブジェクトの配列 someObjというクラスが定義されていると仮定 someObj obj[4]; // オブジェクトの配列 // ここにオブジェクトの配列 obj への代入を行うコードを書く // "名前"と"オブジェクト配列のインデックス"のmap std::map<std::string, int> mp; mp["button1"] = 0; mp["button2"] = 1; mp["apple"] = 2; mp["orange"] = 3; // "button1"という名前のオブジェクトのmethod1の呼び出しは以下のように書ける obj[mp["button1"]].method1(); // method1はsomeObjクラスのメソッドと仮定

投稿2018/12/09 02:04

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asm

2018/12/09 02:13

歴史的な事由でstd::mapは連想配列として利用するとちょっと不都合があるので 他言語でのハッシュテーブルとして利用するならstd::unordered_mapを使った方が便利ですよ
guest

0

私もozwkさん、asmさんに同意。

配列にします。

最初から

button[0] : "前へ"
button[1] : "一時停止"
button[2] : "次へ"

のような感じでやっておけば、連番と同じようにできます。

個数が追加していく予定なら std::vector のような動的配列かリスト構造がいいかも。

投稿2018/12/09 01:59

BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問