質問: hoge_para->( select ); //selectのところにポインタではなく、引数を当てて切り替える。 return out; } ```
回答: こんにちは。 C言語の場合は、hoge_para_uint32(), hoge_para_uint8(), hoge_para_uint16()的な関数を用意して注意深く呼び分けるのが一般的と思います。(暗黙の型変換に要注意) C++は、それのような要求に対するサポートがあります。関数のオーバーロードと呼ばれています。 ただし、暗黙の型変換による落とし穴もあるので使い方は要注意です。特に整数型同士での呼び分けは意外に深い落とし穴が開いています。 【追記】 「質問への追記・修正」依頼欄を見落としていました。 uint32_t型で全て返すことが目的なのですね。1, 2, 3的な番号(メンバ変数ID?)を指定して、該当のメンバの値を返したいと。 番号→メンバ変数変換が必要になりますので、switch-caseを使わざる得ないと思います。(番号が定数なら他にも考えられますが、定数でよいなら変数名でも良いはずなので意味はないです。) > > そこでstructメンバの値を返すルーチンを共通化したいわけです。 > > > その共通化ルーチン内でswitch-caseするしかないだろうと思います。