gpt4 book ai didi

项目之间的c++ header

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:42 25 4
gpt4 key购买 nike

我在用 C++ 编写应用程序时遇到了麻烦。我有两个项目。项目A是普通的c++项目,项目B是带clr支持的c++项目。项目 A 包含使用 LLVM 框架 header 的类。项目 B 包含项目 A 的某些类的托管包装器。我可以在项目 B 中使用项目 A 中的类而不包含它们的 header 吗?

原因是这样的。当我在项目 B 中包含项目 A 的类 header 时,我还需要指定项目 A 的 header 使用的框架库,但 LLVM 框架无法与 clr 支持合作。我无法将框架包含从 header 移动到 cpp 文件。我该如何解决?

最佳答案

只要您不在项目 A 中使用依赖于 LLVM header 的模板,就可以。您始终可以转发声明您在项目 A header 中使用的类型,并将实际 header 包含在 cpp 文件中。

假设您要使用一个名为 llvm_type 的类型这是由 LLVM 编译器的库定义的类。在 projectA.h你可以这样做:

class llvm_type;

class MyAPrjClass {
public:
void myMethod (llvm_type x, int y);
}

然后在你的projectA.cpp您包括 LLVM header :

#include <llvm_type.h>

void MyAPrjClass:: myMethod (llvm_type x, int y)
{
// Define your method using the llvm_type here.
}

只要您转发声明它们,就可以对结构、容器和其他类型执行相同的操作。例如,假设您要使用 std::vector<int>那是 LLVM 编译器的一部分。在这种情况下,您在 header 中声明类似 class VectorInt; 的内容定义原型(prototype)并在您的 cpp 中编写:

#include <vector>
typedef std::vector<int> VectorInt;

并在您的方法定义中使用它。

您不能做的是定义依赖于 LLVM header 的模板类或方法,因为您需要在相同的 header 中定义方法,这将涉及了解导入类型的实现。

关于项目之间的c++ header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27708080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com