gpt4 book ai didi

c++ - 如何重新设计 C++ 类?

转载 作者:行者123 更新时间:2023-11-30 05:40:11 24 4
gpt4 key购买 nike

我有一堆这样的类:

class A 
{
public:
std::string s;
std::vector<int> v;
int a;
}

我正在尝试导出以在 dll 中使用。我希望客户能够像这样使用类:

A a;
a.s = "abc";
b.v.push_back(4);

但是因为无法导出 vector 和字符串,所以这是不可能的。除了为每个成员提供 getter 和 setter 并使用具有这些 getter 和 setter 的抽象接口(interface)之外,还有什么办法可以解决这个问题吗?

最佳答案

在 DLL 接口(interface)处拥有 STL 类是一种非常脆弱的设计:如果这样做,DLL 的所有客户端都必须使用相同版本的 Visual C++ 编译器构建,并且 < strong>相同的设置(例如相同的 _ITERATOR_DEBUG_LEVEL 等),以及相同风格的 CRT
这是高度限制

您可能希望遵循不同的路径。例如,您可以构建一个包装您的 C++ 类的纯 C 接口(interface) API 层,然后从 DLL 中导出它。具有纯 C 接口(interface)的 DLL 就可以了(例如,想想 Win32 API)。
然后你可以分发一个头文件,其中这个纯 C 接口(interface)被包装在 C++ 类中,准备被客户端使用(例如,想想 ATL/WTL,它们是围绕纯 C Win32 API 的方便的 C++ 包装器)。

或者您可以遵循 COM-ish 方法,导出 C++ 接口(interface)。
您可以在本文中找到更多详细信息:

HowTo: Export C++ classes from a DLL

关于c++ - 如何重新设计 C++ 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31837477/

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