我有一些相互继承的类,但它们使用模板来实现。我想要的是有效地获得一个基类的指针和/或引用,就好像它是依赖于模板的其他可能的派生类之一
class a1
{
public:
int a;
virtual void func()
{
}
// other non virtual functions ...
};
class b1
{
public:
//no members or virtual functions
//other non virtual functions ...
};
class a2
{
public:
int a;
// ...
};
template < class T1 >
class derived : public T1,
public a2
{
int a;
// ...
};
派生类可以从 a1 类或 b1 类继承,这主要是为了节省派生类中的空间,因为 b1 是一个空白类,因此当派生类使用模板参数 b1 实例化时,它不会承担数据成员和虚函数的额外负载的一个。
但是,我现在想从派生(a1)中获取一个指针或引用,它实际上是派生(b1)类型的指针或引用。
我真正想要的是帮助以“好”的方式执行 offsetof(),但使用继承,我可以获得 offsetof() a2,我假设这是一个很好的衍生(b1)指针,因为 b1 是空白班。
我试图获取派生(a1)对象的指针,然后添加sizeof(a1),希望这将是正确的位置,但想知道是否有其他人有更好的建议。