私は、私の一部の (C/C++ 初心者) 同僚がパラメーター ストアから名前付きのスカラー パラメーター値を取得するのをより簡単かつ確実にするためのヘルパー関数を作成しています。
問題は、パラメータ ストアは type の値しか格納できないということですが、double
この関数を呼び出すコードは、C++ に変換された C の非常に厄介な山であるため、問題が発生する可能性がある場所があります (または少なくとも偽のorが期待されるdouble
場所にa をダンプするだけです。int
long
そこで、ヘルパー関数を、戻り値の型が指定されていないテンプレート引数であるテンプレート関数にするという考えがありました。そのようにして、呼び出し元は戻り値の型を手動で指定する必要があります。
ただし、関数の引数は Unicode 文字列 ( const wchar_t*
) であり、ユーザーが記号名で行っていたように (以前はマクロを使用して) 呼び出すことができるようにしたかったのです。
テンプレート関数と引数を自動的に文字列化する方法を組み合わせる方法がわかりません! 誰でもガイダンスを提供できますか?私は基本的に、審美的な理由から、巧妙なマクロ/テンプレート ハックを探しています ;-)
マクロとして:
// the return type is always double
#define GetParameter(parameterName) GetParameterFromParameterStore(L#parameterName)
テンプレート関数として:
// the user has to remember to pass the argument as a (wide) string
template<class T> T GetParameter(const wchar_t* parameterName)
{
return (T)GetParameterFromParameterStore(parameterName);
}
編集:理想的には、次のように関数を呼び出せるようにしたいと思います:
int _volumePct = GetParameter<int>(VolumeInPercent);
(余分な装飾や構文はありません)。