我有一个模板类,看起来像这样:
template <typename T>
class foo
{
static const T arr[16];
};
我计划使用的所有类型foo<T>::arr
的{{1}}内容在数字上相同。例如,我会通过在源文件中放置行来为T
和T = float
初始化它,如下所示:
T = double
有没有办法可以在一个地方初始化它而不必重复自己并枚举float foo<float>::arr[16] = {1, 2, 3, 4, ...};
double foo<double>::arr[16] = {1, 2, 3, 4, ...};
可以承担的所有类型?请注意,由于每个数组元素的类型都是T
,因此我不能使用从包含静态数组的非模板基类派生T
的技巧。
答案 0 :(得分:2)
你有什么尝试?这对我有用:
#include <iostream>
using namespace std;
template<typename T>
struct Foo {
static T const arr[16];
};
template<typename T>
T const Foo<T>::arr[16] = {1,2,3,4};
int main() {
for ( float const *f = Foo<float>::arr; f != Foo<float>::arr+16; ++f ) {
cout << *f << " ";
}
cout << endl;
for ( double const *d = Foo<double>::arr; d != Foo<double>::arr+16; ++d ) {
cout << *d << " ";
}
cout << endl;
}