假设我有以下2个班级。如何使用类型转换来实现如下所述的效果?我想要的是: 我返回这个+ 1和这个 - 1因为我的2个类在内存中总是连续的。
right *r = new right ();
left* l = (left*)r;
class left : public top {
int b;
operator right * () {
return this + 1;
}
};
class right : public top {
int c;
operator left * () {
return this - 1;
}
};
答案 0 :(得分:1)
没有安全的方法将right*
类型的指针转换为类型为left*
的指针,反之亦然。你必须做以下两件事之一:
top*
类型的指针。将left*
或right*
转换为top*
是安全的。left*
或right*
执行您要执行的任何操作(假设他们"看起来相似"足够模板代码可用于一个)。