推 zlw:C(const_cast<Packet *>(p)); 124.8.130.15 06/23 04:37
※ 編輯: besnow 來自: 122.116.252.48 (06/23 10:20)
就是我現在有三個函式是
A( const Packet *p)
B(Packet *p)
C(Packet *p)
而Packet是一個struct的型態。
現在原本是
===================================
B (Packet *p){
...
C(p);
return;
}
===================================
可是我現在希望可以透過A函式。可是又沒法拿掉const。因為拿掉會有問題。
要變成:
-----------------------------------
B (Packet *p){
...
A(p);
retuen;
}
A (const Packet *p){
...
C(p);
...
return;
}
--------------------------------------
這樣去寫的話,第一個問題就是B要傳進A的時候,Packet *p to const Packet *p
的部份會error,然後在A函式中,A要傳進C時,同樣的也會發生
const Packet *p to Packet *p 發生error。
如果用強制轉。
--------------------------------------
B (Packet *p){
...
A((const Packet*)p);
retuen;
}
A (const Packet *p){
...
C((Packet*)p);
...
return;
}
-----------------------------------------
可以complier過,可是裡頭東西都有問題。不是原本的那個packet。
所以想來請教一下,有什麼方式可以解決。或是說,有辦法去轉換型態?
還是非得要用memcpy的方式去一個一個做?..
想請教大大們,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.252.48