gpt4 book ai didi

c++ - 如何隐藏 C++ dll 中的类?

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:52 24 4
gpt4 key购买 nike

  1. 我有一个必须从 dll 导出的 C++ 类 Alice。它引用了其他自定义类的对象,例如 Bob

  2. 当我在另一个 exe 项目中使用我的 dll 时,我不想也不需要了解Bob(即使引用是公开的).

  3. 我想用 Bob 的对象在 WinApi 中制作类似 HANDLE 的东西(如 C# 中的 IntPtr)。

原因:我需要在我的 exe 项目中包含 Alice.h 才能使用 Alice,对吗?所以我只想公开 1 个头文件,而不是 Bob.hChellsie.hDetlef.h 和 ...


我怎样才能做到这一点?
HANDLE 是个好主意吗?或者我可以用不同的方式避免下面的问题吗?
代码:

class __declspec(dllexport) Alice
{
public:
Bob bob;
Chellsie chellsie;
Detlef detlef;
};

class __declspec(dllexport) Alice
{
public:
HANDLE bob;
HANDLE chellsie;
HANDLE detlef;
};

最佳答案

当然,Alice 需要 Bob,Bob 是 Alice 不可或缺的一部分。是作曲。如果您持有指向“Bob”的指针,则可以使用前向声明,但现在需要 Bob 的完整定义:

#include "Bob.h" // required, Bob must be known

class __declspec(dllexport) Alice
{
public:
Bob bob;
Chellsie chellsie;
Detlef detlef;
};

对比

class Bob; // declaration is enough

class __declspec(dllexport) Alice
{
public:
Bob* bob;
Chellsie chellsie;
Detlef detlef;
};

关于c++ - 如何隐藏 C++ dll 中的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23243821/

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