第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

SWIG:避免 C++ 到 Python 的別名

SWIG:避免 C++ 到 Python 的別名

犯罪嫌疑人X 2023-04-25 17:47:16
我正在用 C++ 構(gòu)建一個(gè)庫,它使用 SWIG 連接到 Python 3 4.0.1。經(jīng)過一段時(shí)間的開發(fā)后,我注意到(我認(rèn)為是所謂的)別名問題。我準(zhǔn)備了一個(gè)最小的例子,這也會(huì)發(fā)生??紤]具有在 處初始化的dummy單個(gè)(私有)屬性的類?,F(xiàn)在,我有這個(gè)非常小的 python 腳本:attr0import dummy_wrapd1 = dummy_wrap.dummy()d2 = d1d1.set_attr(12)print(d2.get_attr()) # this prints '12', not '0'我希望我所說的別名是這里真正發(fā)生的事情:對(duì)象d2從未被修改,但它采用給定的值d1,就好像賦值d2=d1實(shí)際上是指針賦值一樣。我希望發(fā)生的事情(也是我期望發(fā)生的事情)是賦值運(yùn)算符制作passes it ontoa=b的硬拷貝。換句話說,修改不應(yīng)該影響,反之亦然,只要這符合實(shí)現(xiàn)細(xì)節(jié)(就像我的庫和最小示例中的情況一樣)。baab最后一點(diǎn),這是我在編譯時(shí)收到的消息:g++ -fPIC -c dummy.cppg++ -fPIC -shared -o libdummy_lib.so dummy.oswig -Wall -c++ -python -py3 -o dummy_wrap.cxx dummy_wrap.idummy.hpp:10: Warning 362: operator= ignoreddummy.hpp:11: Warning 362: operator= ignoreddummy.hpp:7: Warning 509: Overloaded method dummy::dummy(dummy &&) effectively ignored,dummy.hpp:6: Warning 509: as it is shadowed by dummy::dummy(dummy const &).g++ -fPIC -c dummy_wrap.cxx -I /usr/include/python3.8g++ -fPIC -shared -o _dummy_wrap.so dummy_wrap.o -L . -ldummy_lib -lpython3.8問題:我想了解這里發(fā)生了什么以及為什么:和dummy(dummy&&)影響dummy& operator=(dummy&&)SWIG 包裝dummy(const dummy&)和的方式dummy& operator=(const dummy&)嗎?期望我想要的默認(rèn)行為是否合理,即這是(別名)使用 SWIG 連接到 python 后類的預(yù)期行為嗎?我該如何解決這個(gè)問題:我應(yīng)該做哪些更改才能讓操作員=制作硬拷貝?
查看完整描述

1 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

因此,感謝原帖中的一些評(píng)論,一個(gè)可能的解決方案是添加一個(gè)clone()方法??梢酝ㄟ^簡(jiǎn)單地?cái)U(kuò)展 C++ 標(biāo)頭來做到這一點(diǎn)。但是,由于這對(duì)某些人來說可能看起來很奇怪,因?yàn)樵谠S多情況下clone()根本不需要 C++ 中的方法,因此我們可以使用 SWIG 擴(kuò)展 python 類。只需以dummy_wrap.i示例中的 并在文件末尾添加以下代碼


%extend dummy {

    dummy clone() const {

        return *$self;

    }

}

不幸的是,這還沒有結(jié)束,因?yàn)槲覀兊?python 代碼必須修改:


import dummy_wrap

d1 = dummy_wrap.dummy()

d2 = d1.clone()

d1.set_attr(12)

print(d2.get_attr()) # now this prints '0'


查看完整回答
反對(duì) 回復(fù) 2023-04-25
  • 1 回答
  • 0 關(guān)注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)