実行時に変数で使用できるデータ型を持つテンプレートクラスをインスタンス化する必要があります。たとえば、このクラスを考えてみましょう。C++で変数からテンプレート引数を指定する
template <typename T, unsigned int U>
class Allocator
{
public:
T * pointer;
Allocator() { pointer = new T[U]; }
~Allocator() { delete [] pointer; }
};
は今、私はこのようにそれを使用したい:
int main()
{
string temp = "int";
unsigned int count = 64;
Allocator<temp, count> a;
return 0;
}
これを行う方法はありますか?
私は、派生クラスをベースポインタでシリアル化するコンテキストでこの問題に直面しています。 RTTIを使って派生クラスの実際の型を識別しますが、実際の型の情報は文字列に格納されます。私の問題は、基本ポインタから型(実行時に文字列として利用可能)にdynamic_castできるようにすることです。助けてください。
Uがコンストラクタのパラメータの代わりにテンプレートパラメータでなければならない理由はありますか? –
上記は実際の問題の例です。これは、この特定のケースでUをコンストラクタ引数にすることによって簡単に解決できますが、私はこれを実際の問題に到達するための例として取っています... – Somesh