我想为基于MIPS
的{{1}}开发一个应用程序。我正在使用embedded device
交叉编译器。我实现了一个简单的代码。
mipsel-elf-g++
class A {
public:
virtual int getValue();
}
class B : public A {
public:
virtual int getValue();
}
int A::getValue() {
return 1;
}
int B::getValue() {
return 2;
}
int main() {
A a1;
B b1;
A* a2 = &a1;
B* b2 = &b1;
int a_val_1 = a1.getValue();
int b_val_1 = b1.getValue();
int a_val_2 = a2->getValue();
int b_val_2 = b2->getValue();
return 0;
}
和a1.getValue()
行成功运行,但当每个b1.getValue()
或a2->getValue()
行执行时,我会在屏幕上看到b2->getValue()
消息。我认为其中一个操作系统,编译器或库可能已经坏了。我不知道怎么能找到问题。
出了什么问题?
答案 0 :(得分:2)
你有:
B b1;
你正在分配:
B* b2 = &b2;
应该是:
B* b2 = &b1;