如何将C ++类声明为继承自另一个类?

时间:2010-01-28 04:28:51

标签: c++ forward-declaration

我知道我可以按如下方式转发声明一个类:

class Foo;

// ... now I can use Foo*

但是,我可以这样做:

class Bar {
  public:
    virtual void someFunc();
};
// ... somehow forward declare Class Foo as : public Bar here
someFunc(Foo* foo) {
  foo -> someFunc();
}

class Foo: public Bar {
}

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以将声明栏转发为class Bar;并更改someFunc的签名,以Bar*作为参数。由于someFunc()是基类中的虚方法,因此它应该可以工作。

答案 1 :(得分:1)

在您的前瞻性声明Foo成为不完整类型之后,在您提供Foo的定义之前,它将保持不完整。 虽然Foo不完整,但任何取消引用Foo指针的尝试都是不正确的。所以要写

foo->someFunc();

您需要提供Foo的定义。