我一個代碼庫,是不是我自己的,具有以下佈局工作:解決納入訂購
object.h:
// Objects are defined
// #include "tickets.h" (functions to access the objects)
// An access-handler object is defined
我要介紹的是知道的對象類,可以從tickets.h中的函數中訪問,但也可以使用訪問處理器對象。該功能是分開的,這被稱爲在tickets.h不使用接入處理程序,即類函數(我不知道從哪裏開始如果不是這樣的話)。
因此,我的類需要tickets.h之前定義,但它的一些功能需要訪問處理程序之後加以界定。有沒有辦法做到這一點,不要把它分成兩個頭文件類似以下內容:
// Objects are defined
// -- include declaration of class, and definition of functions that tickets.h needs
// #include "tickets.h"
// An access-handler object is defined
// -- include functions of class that need the access-handler
這似乎很凌亂分裂的東西像這樣成兩個獨立的文件,我希望把一切都遏制。
感謝您的幫助,我很清楚只有在C++中聲明/定義的一個非常基本的瞭解。
編輯:如果我使用forward聲明並在tickets.h之前包含它(在mynewclass.h中聲明的類和在mynewclass.cc中定義的函數)mynewclass.cc將能夠使用包含mynewclass.h?即訪問處理程序對象。
EDIT2:事情是這樣的:
object.h:
class obj { // definition }
#include "tickets.h"
class obj_handler {
public void handle { // code }
}
tickets.h:
void do_something(obj o){
communicator.foo();
}
我對象(傳播者):
class communicator {
public:
void foo() { // code }
void bar() { // use handle() from obj_handler }
}
由於你可以看到,我的傳播者需要被使用d在tickets.h中,但直到obj_handler之後才能定義。那麼我應該在哪裏包括它?
你能不能給代碼中最小的例子嗎?因爲我根本不理解這個問題。例如,爲什麼要在頭文件中定義對象?您將以每個翻譯單元中的這些對象的多個副本結束。除非你的意思不同,在這種情況下,只有示例代碼可以幫助我們理解你的意思。 –
我將新功能引入不屬於我自己的系統,其中大部分功能實際上都在頭文件中實現。我想我可以嘗試一小段代碼來解釋我的意思。 – ricky116