我有一個類,例如A.h檔案中的A和B.h檔案中的B: public A類。
A.h檔案
#ifndef A_H
#define A_H
class A
{
public:
void foo {}.
};
#endif
B.h檔案
#ifndef B_H
#define B_H
#include "A.h"
class B。public A
{
...
};
#endif
有沒有一種方法可以包括B,但在我包括A.h之前不能訪問A?
像這樣
#include "B.h"/span>
main( ) {
B* b = new B(); /ok
b->foo(); //OK。
A* a = new A(); /Error
a->foo(); //Error 。
}
uj5u.com熱心網友回復:
不,B.h依賴于A的定義,所以沒有辦法在不包含A的定義的情況下包含B.h。如果B必須在B.h中定義,并且B必須繼承A,那么就沒有辦法繞過這種依賴關系。
你可以通過改變A為抽象型別來使創建獨立的A成為一個錯誤。但即使A.h被單獨包含,這仍然是一個錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/320092.html
標籤:
