1
最近,我偶然发现了另一个C++问题,这给我带来很多困难。假设我们有小程序:指向虚拟类
class A {
public:
virtual bool c() = 0;
virtual bool b() = { return false; };
virtual ~A() {}
}
class B : public A {
public:
bool b() = { return true; };
~B() {}
}
...
void c(A *pointer) {
if (pointer->b()) {
cout << "Derived class";
}
}
在这种情况下,编译器的方法C()与误差“成员访问到不完整的类型A”的“如果”行返回错误。有人可以解释为什么编译器返回这样的错误吗?如果解除异常确实是正确的,那我该如何预防呢?
非常感谢!
你真的试着编译你发布的代码吗?代码中有几处语法错误。顺便说一下:我复制了你的代码并修复了简单的错误。一切都很好。 –