で私は小さなテンプレートヘルパークラスを定義したかった...今日は暗礁に乗り上げる:はsizeof()とテンプレート引数のctor /非CTOR機能
template<class T>
CMyClass
{
public :
CMyClass() { size_t iSize = sizeof(T); } // Allowed.
size_t GetElementSize() const { return sizeof(T); } // C2027.
};
そしてもちろん、それがコンパイルされないでしょう(C2027)。私の質問は、タイプのサイズを取得することは可能ですか?私が必要とするのは、オブジェクトが構築される型が、さまざまに定義された構造体である可能性があるため、実行時に、使用する構造体のサイズを取得する必要があるからです。実験の迅速なビットを通じて
私は頑固だから、私ctorのではなく、非CTOR機能でができ使用はsizeof(T)と思われる - ので、私の質問は今あります...なぜ?!
このコードをコンパイルしてみましたか? 'template < class T >'と 'CMyClass'の間に' class'や 'struct'がありません。 'class'を追加すると、gccはちょうどうまくコンパイルされます。 – Tobias
また、 "std :: size_t"を試してください。コンストラクタ内のコードは動作しているように見えるかもしれませんが、 'CMyClass'のオブジェクトを作成するときにコンストラクタがインスタンス化されるまで通常はコンパイルされません。 –