2
任意の次元数のジオメトリでベクトルのテンプレートクラスを作成しようとしています。直感的なコンストラクタを作成して、ディメンション番号と等しい数のイニシャライザを渡すことができます。例:C++:任意の数の初期化引数を持つテンプレートクラス/関数
template<int dim = 3, typename float_t=double> class Vec{
float_t x[dim];
public:
Vec(...) {
//some template magic
}
};
int main() {
typedef Vec<3> Vec3d;
typedef Vec<2> Vec2d;
double x=1,y=2,z=3;
Vec3d v(x,y,z);
Vec2d w(x,y);
}
私はブラックマジックの知識が不足しています。つまり、C++テンプレートです。私の目標を達成するためにこの例をどのように書くべきですか?もちろん、すべてのケースで正確なコンストラクタを書く必要はありません。それはC++テンプレートの精神ではありません。私は本当にスマートな方法でそれを達成する方法に本当に興味があります。
それは素晴らしいです!ありがとう、またstatic_assertのために、私はそれを知らなかった! :D – Ch3shire