2015-04-23 66 views
1

對於我的C++ DLL,我使用帶有抽象接口的工廠模式。
this article缺點部分,它說:C++對象作爲接口方法的參數

抽象接口方法不能返回或接受一個常規的C++對象作爲參數。它可以是內置類型(如int,double,char *等)或另一個抽象接口。這與COM接口的限制是一樣的。

你能詳細說明這是什麼意思嗎?我究竟能做什麼,爲什麼?
有沒有關於此事的更多信息?

回答

1

該陳述看起來並不準確。抽象接口方法可以返回或接受C++類實例(或其指針)作爲參數。這裏沒有COM類限制。雖然調用者/被調用者使用不同的編譯器設置,對齊,使用不同的分配器等來構建,但這可能是不安全的,在這種情況下,相同的C++類被定義爲稍有不同,並且不匹配可能導致意外行爲。也就是說,這不是「不能」,而是關於它可能導致不明顯的問題。

所討論的問題的一個常見例子是通過CString作爲參數: