gpt4 book ai didi

iphone - 在多个源代码中将 ObjC 和 C++ 与 C++ 模板类混合

转载 作者:行者123 更新时间:2023-11-28 08:22:07 30 4
gpt4 key购买 nike

我只是想将存档中保存的一些旧 C++ 源代码移植到 iOS,从而提供 ObjC GUI,对某些 C++ 内容使用包装器,并将重要的数据工作内容留在 C++ 代码中。所以,问题是旧的来源来自 Win32 MFC,因此使用 CString 类作为字符串,我想用 Joe O'Leary 的 CStdString 替换它,这是一个 C++ 模板类,可以很好地完成它......但是:

我必须使用字符串类定义以及一大堆不同的 C++ 源代码,因此它们中的每一个都将包含自己的 CStdString 模板。通常我会为整个字符串类编写一个包装器,但如果不需要的话会更好。

在不同源中实例化字符串会有问题吗?将模板化字符串从一个源传递到另一个源会不会有问题?事实上,我不知道编译器是否只为模板生成一次代码或多次,因为模板使用相同的实例化类型。

你能给它加点光吗?

谢谢...

最佳答案

MFC 和 CString 可能只能在 Windows 操作系统上正常工作,因此它们不适合放入可能被 Windows 以外的平台使用的任何类型的库中。

我不熟悉 Joe O'Leary 的 CStdString 类,但我建议尽可能使用 std::stringchar*"extern C" 导出和包装函数以在 C++ 领域之外使用,因为 c 风格的字符串更容易与可能需要调用您的 C++ 库的其他语言兼容。

据我所知,就模板而言,所有变体都是在编译时生成的,然后在运行时选择正确的实现。但是,您的问题很可能是从一种字符串到另一种字符串的翻译,这可能需要您创建一些中间层或包装器以将一种语言的字符串类型编码为另一种语言。

关于iphone - 在多个源代码中将 ObjC 和 C++ 与 C++ 模板类混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5437675/

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