【发布时间】:2017-04-26 12:05:50
【问题描述】:
我已经生成了带有数据数组(一些 const 静态,一些可变)和访问器方法的配置文件。问题是现在其中一种数据类型将被模板化,但我根本无法让编译器接受它。
模板化类型是非 pod,但默认可构造。
bo 使用的定义在 cpp 文件中,但由于在生成代码时我不知道模板类型,所以我不能再这样做了。
即我想要类似以下的内容(如果可以,但在标题之外定义更好)
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:嗯。真的谢谢。在更改代码时,我将静态 POD 结构的一个成员设为 const。显然,这导致我的嵌入式编译器将其视为非 POD 并给出了上面的错误消息。没有 const 成员,POD_ONES 部分可以工作。