2012-09-06 57 views
0

在組合boost,演示項目和另一個庫時,我遇到了我的定義問題。如何在一個cpp中的類定義可見/可用於另一個cpp

有一個X.cpp文件,包括一個類X,我需要在Y.cpp中使用這個類作爲變量,將一個void指針轉換爲指向這個類的指針。

代碼:

X.cpp 

#include <boost/...> 

class x { 
} 

Main(){ 
    x c(...); 
    handler = init(&c); 
    anotherLib-Function(void *handler); 
    //will call function in Y.cpp with c as void pointer 
} 

Y.cpp 

#include ?!! 

yfunction(void *c){ 
    x *cHandle; 
    *cHandle = (x *)c; 
    (*cHandle).write("texte"); 
} 

這是它如何工作最後一次 - 種。我非常感謝這個混亂的結構或使這個代碼更好/工作的任何事情的可靠解決方案。謝謝!

+2

可能你需要在'x.hpp'頭文件中聲明你的'x'類嗎? – fasked

+4

這正是C++具有頭文件的原因。 – Jon

+0

沒有一個 - 也有這個想法,但遇到了其他麻煩 - 已經開始刷新我的內存和基本結構的記憶,但希望在這裏採取一個小捷徑。我會再試一次,再看看我在這條道路上遇到的麻煩。 – Jook

回答

0

將X文件拆分成包含類聲明的頭文件(Xh)和包含類構造函數,方法等的定義的源文件(X.cpp)。 現在將頭文件包含在Y.cpp文件中你的。然後編譯某種程度上是這樣的:

g++ Y.cpp X.cpp 
+0

是的,做到了這一點,我在包含之後忘記了一些importand語句,這就是爲什麼它首先不起作用 - 這要感謝所有人提醒我正確的方法;) – Jook

2

如果你只需要指針或引用X,你也可以使用類X的正向聲明中Y.cpp

相關問題