我已經用數據數組(一些常量靜態,一些可變)和訪問器方法生成了配置文件。問題是,現在有一種數據類型將被模板化,但我無法讓編譯器接受它。模板類中的數組定義
模板類型是非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