1

私は Visual Studio 2012 でフォームを作成しており、trFinger1Ph1. 変数を使用してこれにアクセスすることは可能ですか?

これは、通常、コントロールにアクセスする方法です(これは機能します)

int value = Form1::trFinger1Ph1-> Value;

しかし、私はこれを行うことを望んでいます:

std::string test = "trFinger1Ph1"
int value = Form1::test -> Value;

コントロールのリストが多いため、これを使用しています。この方法でコントロールにアクセスすると、コードの大部分をクリーンアップするのに役立ちます。プログラムがテストのために trFinger1Ph1 の内部を調べており、それを変数テストとして認識していないことは明らかです。

何か案は?

4

3 に答える 3

2

いいえ、できません。PHP やその他の言語では可能ですが、C や C++ では不可能です (これは他の多くの言語にも当てはまります)。

コードがコンパイルされると、変数の名前は「消えます」。

問題を解決する何か他のことを行うことができるかもしれません (これは XY の質問であると思われるため、問題 X があるため Y を行う方法を尋ねており、Y を行うことがそれを解決する正しい方法だと考えています)。たとえば、名前を文字列として含むテーブルと、これが参照する関連オブジェクトへの参照を作成し、テーブルを使用して文字列を検索し、参照を使用して値を取得できます。私は「フォーム」の専門家ではありませんが...

于 2013-06-28T23:06:28.843 に答える
1

C++ では、そのように変数にアクセスすることはできません。

本当に文字列リテラルを介してそれらにアクセスしたい場合は、 を作成std::mapし、さまざまなメンバー変数へのポインターまたは参照を設定できます。

std::map<std::string, ControlType&> controls;
controls.insert(std::pair<std::string, ControlType&>("xyz", Form::trFinger1Ph1);

controls["xyz"].Value = somevalue;

ただし、それでコードがきれいになるとは思いません。もう 1 つの方法は、コントロールへの参照を単純に宣言することです。

ControlType& control1 = Form::trFinger1Ph1;

control1.Value = somevalue;
于 2013-06-28T23:13:52.850 に答える