gpt4 book ai didi

c++ - 我可以统一初始化模板类的静态常量成员吗?

转载 作者:行者123 更新时间:2023-11-28 02:57:15 25 4
gpt4 key购买 nike

我有一个看起来像这样的模板类:

template <typename T>
class foo
{
static const T arr[16];
};

foo<T>::arr的内容所有类型的数值都相同 T我打算使用。例如,我会将其初始化为 T = floatT = double通过将行放在源文件中,如下所示:

float foo<float>::arr[16] = {1, 2, 3, 4, ...};
double foo<double>::arr[16] = {1, 2, 3, 4, ...};

有没有一种方法可以让我在一个地方初始化它,而不必自己重复并枚举 T 的所有类型?可以承担吗?请注意,由于每个数组元素的类型都是 T ,我无法使用推导 foo<T> 的技巧来自包含静态数组的非模板基类。

最佳答案

你试过什么?这对我有用:

#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;
}

关于c++ - 我可以统一初始化模板类的静态常量成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com