次のようなクラス (疑似コード) を作成できるのではないかと思います。
template <class Arg1T, ... class ArgNT>
class my_class
{
public:
my_class(Arg1T Arg1, std::string Arg1_name ... ArgNT ArgN, std::string ArgN_name){}
};
そして、たとえば定義を使用して、コンパイル時に提供された引数の型ごとに関数を自動生成して、(疑似コード) のようなものを取得できる場合:
template <class Arg1T, ... class ArgNT>
class my_class
{
public:
my_class(Arg1T Arg1, std::string Arg1_name ... ArgNT ArgN, std::string ArgN_name){}
// for each Arg we want to create a function like
ArgMT my_class_function(std::string name)
{
if(name == ArgM_name)
return ArgM;
}
};
現代のC ++でそのような/または少し似たようなことが可能ですか?それを作成する方法は?
私が言おうとしているのは、関数テンプレートからコンストラクターに提供されるクラスタイプごとに、関数を生成したいということです。そして、そのようなことをどのように行うのだろうか?ここでは、繰り返す方法を示します が、クラス引数とその型に提供されたものを繰り返す方法は?
N
つまり、クラス テンプレートの引数 ( )の量がわかればN
、さまざまな型 (引数ごとに 1 つ) とN
文字列 (すべてプライベート) の変数を作成できるので、N
そのセッターとゲッターの関数を作成できます (strings +変数) (コンストラクターで呼び出します)。ここでの主な問題は、同じ型を 2 回以上取得する時間を解決する方法、boost.preprocessor から大量の引数を取得する方法、同じ型をフィルタリングする方法です。