指向虚拟课程的指针

时间:2013-10-07 12:02:27

标签: c++ class pointers inheritance

最近,我偶然发现了另一个让我筋疲力尽的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()的“if”行返回错误,错误为“成员访问不完整类型A”。有人可以解释一下为什么编译器会返回这样的错误吗?如果它确实是正确的触发异常,那么我该如何防止它呢?

非常感谢!

1 个答案:

答案 0 :(得分:3)

“不完整类型A”表示在您编译的代码中(但不是您发布的代码),在A中使用之前没有c的定义}。您需要在与c相同的源文件中或在该源文件中包含的标头中定义。

相关问题