私は、データ配列(静的な静的なもの、変更可能なもの)とアクセサメソッドを持つ設定ファイルを生成しました。問題は、データ型の1つがテンプレート化されるようになりましたが、コンパイラにそれを受け入れることができないということです。テンプレートクラスの配列定義
テンプレート型は非ポッドですが、デフォルトで構成可能です。
使用される定義はcppファイル内にありますが、コード生成中にテンプレート型がわからないため、これ以上はできません。
I.e.私は現在、私はPOD_ONES定義と「のために「ストレージクラスがここで指定することはできません」を取得(より良い私ができるが、ヘッダ外定義する場合)、次の
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
...
};
ような何かをしたいと思いますManyTsの場合、非静的データメンバーはそのクラスの外に定義することはできません。 "
しかし確かに、C++のクラスでテンプレート化された非自明な配列を作成するには何らかの方法が必要ですか?これまでのところ、テンプレート型が整数型の例しか見つかりませんでした。
'POD1'は有効範囲にありますか?それが定義されている限り私はエラーを得ることができません。 – NathanOliver
@ NathanOliver:Hm。本当にありがとう。コードを変更しながら、静的POD構造体constの1つのメンバーを作成しました。どうやら、私の組み込みコンパイラがそれを非PODとして扱い、上記のエラーメッセージを出したのです。 constメンバーがなければ、POD_ONESパートが動作します。 – Troels