gpt4 book ai didi

C++ 对象作为接口(interface)方法的参数

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

对于我的 C++ DLL,我使用带有抽象接口(interface)的工厂模式。
this article的缺点部分,它说:

An abstract interface method cannot return or accept a regular C++ object as a parameter. It has be either a built-in type (like int, double, char*, etc.) or another abstract interface. It is the same limitation as for COM interfaces.

您能详细说明这是什么意思吗?我不能做什么,为什么?
关于这个问题是否有任何进一步的阅读 Material ?

最佳答案

这个说法看起来不准确。抽象接口(interface)方法可以返回或接受 C++ 类实例(或其指针)作为参数。这里没有类似 COM 的限制。尽管调用者/被调用者是使用不同的编译器设置、对齐、使用不同的分配器等构建的,但它可能是不安全的。在这种情况下,相同的 C++ 类的定义略有不同,不匹配可能会导致意外行为。也就是说,不是“不能”,而是可能会导致不明显的问题。

有关问题的一个常见示例是将 CString 作为参数传递:

关于C++ 对象作为接口(interface)方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816558/

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