2012-09-06 117 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

相关问题