目前我有一個大類Policy
,它分別在文件globals.h
和globals.cpp
中聲明和定義。除了Policy
類之外,這些文件還包含幾個使用Policy
類的其他類和函數。由於編譯時間問題,我現在想將Policy
類與其他所有類分開。我希望在其他源文件中定義所有其他類和所有使用Policy
的函數,以便在更改Policy
類時,我不必重新編譯所有其他類和函數。在多個源/頭文件中使用C++類時設置頭文件
但是,當我嘗試分離東西時,嘗試使用Policy
類時,出現大量「字段不完整類型」錯誤。我相信他們是由於錯誤地使用了#include
陳述。
下面我試圖以簡單和簡潔的方式模仿我的設置。請注意,還有許多其他源文件也是#include "globals.h"
。
globals.h:
#ifndef GLOBALS_H_
#define GLOBALS_H_
class Policy;
class A {
A(std::vector<Policy>);
};
class Policy {
// many member objects and functions declared
};
void func1(Policy&);
void func2(Policy&);
#endif
globals.cpp:
#include "globals.h"
A::A(std:vector<Policy> p) {
// do stuff
}
//
// Define all of Policy's member functions
//
void func1(Policy& p) {
// do stuff
}
void func2(Policy& p) {
// do stuff
}
所以,現在我會得到我的具體的(雖然開放式的,可能是模糊的)問題。 ..
問題:鑑於我原本是h廣告上面描述的設置,並且當我試圖將上面的內容拆分爲policy.cpp
和policy.h
和other.cpp
和other.h
時,我遇到了很多「字段不完整類型」錯誤,我可能會犯什麼樣的錯誤?
我希望對這個問題的回答將幫助我確定我可以仔細研究之前,我再次試圖分裂我的代碼的問題。 做出更改並遇到錯誤後,我放棄並恢復到上述原始設置。但後來,我決定重新考慮並重試將內容分割成多個源文件。所以,我沒有可以分享的特定問題代碼。