2015-04-23 77 views
1

对于我的C++ DLL,我使用带有抽象接口的工厂模式。
this article缺点部分,它说:C++对象作为接口方法的参数

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

你能详细说明这是什么意思吗?我究竟能做什么,为什么?
有没有关于此事的更多信息?

回答

1

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

所讨论的问题的一个常见例子是通过CString作为参数: