假设我有一个如下所示的结构
:
struct ParentStruct
{
virtual void XYZ()
{
getSize(sizeof(*this));
}
int memberX;
}
还有另一个继承父结构的struct
:
struct ChildStruct : public ParentStruct
{
int memberY;
int memberZ;
}
假设 sizeof(int) == 4
,是否可以将 12 的值传递给函数 getSize()
从子结构调用(我目前得到的值是 4)?
我宁愿不必覆盖所有子结构中的 XYZ()
,因为我会有很多子结构。
最佳答案
正如其他人所说,this
的类型是它所使用的类的静态类型。但是,您可以做一些模板技巧:
struct Parent{
virtual void xyz(){ getSize(sizeof(Parent)); }
int mem1;
};
template<class D>
struct Intermediate : public Parent{
virtual void xyz(){ getSize(sizeof(D)); }
};
struct Child : public Intermediate<Child>{
int mem2, mem3;
};
这应该会产生想要的效果。
关于c++ - sizeof(*this) 和结构继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7910377/