![](/img/trans.png)
[英]In C++, is it possible to forward declare a class as inheriting from another class?
[英]How to forward declare a C++ class as inheriting from another class?
我知道我可以如下聲明一個類:
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 {
}
?
謝謝!
您可以將Bar聲明為Bar class Bar;
並更改someFunc
的簽名以Bar*
作為參數。 由於someFunc()
是基類中的虛方法,因此它應該可以工作。
在您的前向聲明Foo
成為不完整的類型之后 ,在您提供Foo
的定義之前,它將保持不完整。 當Foo
不完整時,任何取消引用Foo
指針的嘗試都是不正確的。 所以寫
foo->someFunc();
您需要提供Foo
的定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.