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

时间:2015-04-23 07:28:57

标签: c++ windows dll com

对于我的C ++ DLL,我使用带有抽象接口的工厂模式 在this article的劣势部分,它说:

  

抽象接口方法不能返回或接受常规C ++对象作为参数。它可以是内置类型(如int,double,char *等)或其他抽象接口。它与COM接口的限制相同。

你能详细说明这意味着什么吗?究竟我不能做什么以及为什么? 关于这个问题还有进一步的阅读吗?

1 个答案:

答案 0 :(得分:1)

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

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