3

我有一个这样的类结构:

class A {
public:
    virtual int a1() = 0;
    int a2() {
        return a3();
    }
protected:
    int a3() {
        return a1();
    }
};

class B : public A {
public:
    virtual int a1() {
        return 1;
    }
};

int main() {
    B b_obj;
    int value1 = b_obj.a2(); // This fails.
}

我正在使用 KPIT GNU RX 工具链(GCC 端口)为 Renesas RX63N 处理器构建。正如评论的那样,我已经测试过B::a2()并且失败了 - 使用调试器单步执行我通常会在调用期间的某个时间点收到“未定义指令”异常。

我已经将这些方法简化为上面最简单的方法,重新测试,我仍然遇到同样的失败。因此,我猜测虚拟表有问题,但我不知道是什么问题。任何人都可以提供一些帮助吗?

4

1 回答 1

2

http://ideone.com/mIbNbs有效。b_obj.a2()是正确的。

所以它应该是你的编译器的一个错误。(或者您显示的代码不是正确的)

于 2013-09-26T09:32:23.610 回答