我可以为2个类似的类使用类型转换操作符吗?

时间:2014-03-26 02:10:53

标签: c++ inheritance operator-overloading

假设我有以下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;
    }
};

1 个答案:

答案 0 :(得分:1)

没有安全的方法将right*类型的指针转​​换为类型为left*的指针,反之亦然。你必须做以下两件事之一:

  1. 请改用top*类型的指针。将left*right*转换为top*是安全的。
  2. 使用模板在left*right*执行您要执行的任何操作(假设他们"看起来相似"足够模板代码可用于一个)。