【发布时间】:2010-11-22 08:16:13
【问题描述】:
我今天遇到了一个障碍......我想定义一个小的模板化帮助类:
template<class T>
CMyClass
{
public :
CMyClass() { size_t iSize = sizeof(T); } // Allowed.
size_t GetElementSize() const { return sizeof(T); } // C2027.
};
当然,它不会编译 (C2027)。我的问题是,是否可以获得类型的大小?我需要这个的原因是构造对象的类型可能是许多不同定义的结构,因此我需要在运行时获取所用结构的大小。
通过一些快速的实验,因为我很固执,看来我可以在 ctor 中使用 sizeof(T),但不能在非 ctor 函数中使用 - 所以我现在的问题也就是为什么?!
【问题讨论】:
-
您真的尝试过编译这段代码吗?它在
template< class T >和CMyClass之间缺少class或struct。如果你添加class,gcc 就可以编译好了。 -
另外,试试“std::size_t”。构造函数中的代码似乎可以工作,但通常在创建
CMyClass<T>的对象时实例化构造函数之前不会编译它。
标签: c++ constructor templates sizeof arguments