混乱したタイトルのため申し訳ありません。私はそれ以外にどのように言いたいのか分かりません。例はそれ自身を説明する必要があります。テンプレートを使用したC++メンバ関数テンプレート
私はtypemapsと呼ばれるものを発見し、このように私のコードにそれを使用する:
template<typename T>
struct typemap
{
static const int INDEX;
};
template<>
const int typemap<Type1>::INDEX = 1;
template<>
const int typemap<Type2>::INDEX = 3;
template<>
const int typemap<Type3>::INDEX = 11;
タイプ1タイプ2タイプ3 &はstuctsであり、ここではタイプのように使用しました。 INDEX番号は構造体の内部にあることはできません。これは、異なるタイプ番号を持ち、同じタイプオブジェクトを持つ別のタイプマップが存在する可能性があるためです。したがって、typemapはベクトルのようなcolectionのstuctsの異なる順序のために働くので、注文は私にとって重要です。
次のものは、属性としてType1-3を持つ非テンプレートクラスです。そして私がしようとしているのは、std :: functionの助けを借りてこれらの属性をベクトルに挿入することです。しかし、私は一般的なタイプマップを取ってベクトルに挿入するためのインデックスとして使用する必要があります。
私はそれが動作するかもしれないと思った唯一のものは、より多くのテンプレートを使用しています。次のコードのようなものですが、これは正しい方法ではありません。まだテンプレートが新しくなっていますので、関数bodyをベクターに正しく書くために助けが必要です。ベクトル が必要です。
class MyClass
{
Type1 type1_;
Type2 type2_;
Type3 type3_;
..
template<typename T>
void toVector(T& typemap)
{
std::vector<..> vect;
vect.resize(..);
vect[typemap<Type1>::INDEX] = type1_.someFunction(..);
vect[typemap<Type2>::INDEX] = type2_.someFunction(..);
}
};
私はメンバ関数に間違ったテンプレートを使用すると確信しています。何とかTパラメータにもいくつかのテンプレートパラメータがあると言います。私の英語のために申し訳ありません、ネイティブスピーカーではありません。また、 ".."には申し訳ありません。私の問題とは無関係で、コードを混乱させるでしょう。
[テンプレートテンプレートパラメータ](http://en.cppreference.com/w/cpp/language/template_parameters#Template_template_parameter)を探しています。 – Quentin
人々が大文字の命名規則の悪い習慣を取り除くとき、大文字ですか? – Slava
@Slavaなぜそれは悪い習慣ですか? – CppChris