sizeof(int), sizeof(double)之类是在编译期就计算出来了的,怎样在编译期就能知道某个类的大小呢?且看下面:
class MyClass
{
// ...
};
要在编译期知道MyClass的大小,先写个辅助类,
template<int Size> class CalcSize;
随便在哪个CPP中写下一行 CalcSize<sizeof(MyClass)>();
再编译,就会有类似错误
error C2514: “CalcSize<Size>” : 类没有构造函数
with
[
Size=1
]
此时的Size=1就是MyClass的大小.
class MyClass
{
// ...
};
要在编译期知道MyClass的大小,先写个辅助类,
template<int Size> class CalcSize;
随便在哪个CPP中写下一行 CalcSize<sizeof(MyClass)>();
再编译,就会有类似错误
error C2514: “CalcSize<Size>” : 类没有构造函数
with
[
Size=1
]
此时的Size=1就是MyClass的大小.
本文介绍了一种在编译期间获取自定义类大小的方法。通过定义一个辅助模板类并在源文件中实例化它,可以使得编译器在编译阶段计算出类的大小并报告错误信息,从而间接读取到类的大小。
1427

被折叠的 条评论
为什么被折叠?



