我已经用数据数组(一些常量静态,一些可变)和访问器方法生成了配置文件。问题是,现在有一种数据类型将被模板化,但我无法让编译器接受它。模板类中的数组定义
模板类型是非pod,但默认可构造。
使用的定义是在cpp文件中,但由于我不知道模板类型,而代码正在生成,我不能再这样做了。
I.e.我想类似如下(如果我能更好,但头外面的定义)
template<typename T>
class LargeConfig :
{
public:
// methods
private:
static const POD1 POD_ONES[];
T ManyTs[];
};
template<typename T>
static const POD1 LargeConfig<T>::POD_ONES[] =
{
{ 0U, 1U}, // instance 1
{ 1U, 1U}, // instance 2
...
};
template<typename T>
T LargeConfig<T>::ManyTs[] =
{
T(), // instance 1
T(), // instance 2
...
};
目前我得到“存储类可能不会在这里指定”为POD_ONES定义和“非静态数据成员可能不会在其类之外定义为“ManyTs”。
但肯定有一定的方法来创建模板化的非平凡的数组在c + +中的类?到目前为止,我只找到了模板类型是整数类型的例子。
'POD1'在范围内吗?只要定义了错误,我就不会收到错误。 – NathanOliver
@NathanOliver:恩。非常感谢。在更改代码时,我创建了静态POD结构const的一个成员。显然,这导致我的嵌入式编译器将它视为非POD并给出了上面的错误消息。没有const成员,POD_ONES部分就可以工作。 – Troels