【发布时间】:2020-05-09 13:15:47
【问题描述】:
我只是在学习模板,并试图为像这样的向量编写一个简单的模板类
template <unsigned N>
struct vec {
std::array<float, N> m_buffer;
float& operator[](unsigned index) { return m_buffer[index]; }
vec(float value) { std::fill(m_buffer.begin(), m_buffer.end(), value); }
vec(float(&value)[N]) { std::copy(std::begin(value), std::end(value), std::begin(m_buffer)); }
vec(float* value) {
for (int i = 0; i < N; i++)
m_buffer[i] = value[i];
}
float getmag() {
float ret=0;
for (int i = 0; i < N; i++)
ret += m_buffer[N] * m_buffer[N];
return sqrt(ret);
}
};
int main() {
vec<3> a({ 1.0f, 2.0f, 3.0f });
return 0;
}
现在我想创建一个构造器,它可以接收 N 个浮点数并将它们分配给数组 m_buffer,但没有找到任何方法。 这可以通过专门化模板类对 N 的某些值完成,但是对于任意数量的 N 怎么办?
【问题讨论】:
-
您在寻找variadic templates 吗?