一个cpp中的类定义如何对另一个cpp可见/可用

How can a class definition in one cpp be visible/usable to another cpp

本文关键字:cpp 另一个 可见 可用 定义 一个      更新时间:2023-10-16

在组合boost、一个演示项目和另一个库时,我的定义遇到了问题。

有一个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");
}

这就是上次的工作方式——有点像。我非常感谢为这个混乱的结构或任何使代码更好/工作的东西提供一个坚实的解决方案。谢谢

如果只需要指向X的指针或引用,也可以在Y.cpp中使用类X的前向声明。

将X文件拆分为包含类声明的头文件(X.h)和包含类构造函数、方法等定义的源文件(X.cpp)。现在将头文件包含在您的Y.cpp文件中。然后以某种方式编译如下:

g++ Y.cpp X.cpp