gpt4 book ai didi

c++ - 可以跨 dll 边界返回 const 引用/指向 std::vectors 的指针吗?

转载 作者:行者123 更新时间:2023-12-02 10:21:48 24 4
gpt4 key购买 nike

我在一个单独的 dll 中有业务逻辑,并且为了能够从这个 dll 中导出一个类以供例如 GUI 类使用,我被告知不要将任何 std 模板对象(如 std::vector 跨 dll 接口(interface)边界传递)。但是,我可以将引用和指针传递给模板类型对象。

何时可以将引用或指向 std::vector 的指针(如果有区别,则用指针填充)以在业务逻辑之外/跨 dll 边界(作为 getter 的返回值)进行编码。例子:

const std::vector<int*>& getNumbers();
const std::vector<int*>* getNumbers();

我可以一直这样吗?与仅按值传递相比,这两种选择的含义是什么?

或者我应该完全避免传递 std::vector 吗?在这种情况下有什么替代方案?

编辑:我知道跨 dll 边界传递对象是有问题的,你必须知道使用了哪个编译器等。我想知道返回 const 引用和指针是否无论如何都是一种解决方法,因为我被告知它是,如果这个是很好的做法。

最佳答案

任何证明“不通过 dll 接口(interface)边界传递任何 std 模板对象(如 std::vector)”的理由都将同样适用于传递指针和对 std::vector 的引用。

当跨越边界的代码取消引用指针时,它会遇到同样的问题。

所以不行。

关于c++ - 可以跨 dll 边界返回 const 引用/指向 std::vectors 的指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59864493/

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