http://www.swig.org/papers/PyTutorial98/PyTutorial98.pdf 它來自上面的鏈接:Swig工具和C++。作爲太聰明
我知道這是一個古老的發佈中,因此它是可能的信息是過時的。
我想問:
「似乎做工精細用C++,如果你不是太聰明」 是什麼意思,是太聰明嗎?
是否有已知的情況/案例,我非常小心,我在編程C++模塊並使用swig
工具擴展Python?
http://www.swig.org/papers/PyTutorial98/PyTutorial98.pdf 它來自上面的鏈接:Swig工具和C++。作爲太聰明
我知道這是一個古老的發佈中,因此它是可能的信息是過時的。
我想問:
「似乎做工精細用C++,如果你不是太聰明」 是什麼意思,是太聰明嗎?
是否有已知的情況/案例,我非常小心,我在編程C++模塊並使用swig
工具擴展Python?
這張幻燈片很奇怪,誤導人。 SWIG不會將通過值轉換爲通過引用。讓我嘗試用一個例子來闡明:
比方說,在這個例子中你有C++函數
double dot_product(Vector a, Vector b);
現在,在純C++(不痛飲,沒有包裝),你可以使用這個功能在下面的例子:
1.
Vector a = Vector(1,0);
Vector b = Vector(0,1);
double zero = dot_product(a, b);
2.
Vector *a = new Vector(1,0);
Vector *b = new Vector(0,1);
double zero = dot_product(*a, *b);
在這兩種情況下,函數實際上都使用完全相同的方式使用按值調用。
SWIG將所有對象包裝成一個包含指向該對象的指針的結構,因此在引擎蓋下SWIG傳遞指針指向所有內容,因此使用第二個示例中的語法。但是沒有任何轉換/轉換的調用語義。
回答您的問題:
「似乎做工精細用C++,如果你不是太聰明」是什麼意思,是太聰明嗎?
我不知道。正如另一個答案所述,可能是一個笑話。
是否有已知的情況/案例,我非常小心,我在編程C++模塊和使用swig工具擴展Python?
這是一個非常寬泛的問題,肯定存在一些缺陷,特別是與內存管理有關的缺陷。但是,這個特殊的「轉型」不是問題。
僅供參考,這裏是relevant entry in the SWIG manual。請注意,它的措辭不同:函數被轉換爲接受指針。沒有關於「調用語義」的說法(因爲這不是問題)。
在猜測我會假設他們說'它的工作,如果你的複製構造函數有預期的語義',但我不能肯定地說。 – Flexo
如果你使用'--wrap'和'ld',它可能會干擾,儘管這也適用於C – OMGtechy