[問題] 請問用指標達成物件的交換

看板C_and_CPP (C/C++)作者 (睡覺一直想)時間12年前 (2013/10/29 16:22), 編輯推噓5(5016)
留言21則, 14人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Code:Blocks 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) none 問題(Question): 我在物件裡寫了一個函數, 這個函數要引入另一個物件的reference來替換原有的物件, 我想透過交換兩個物件pointer來達到這個效果, 請問我在物件的內部, 要使用什麼方法才能呼叫出物件自己的pointer? 謝謝! 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.67.52.56

10/29 16:24, , 1F
this 不過你的想法有問題. 交換指標是什麼概念 XD
10/29 16:24, 1F
開一個新的hold物件, 把hold物件的指標指向A物件 把A物件指標指給B物件, 把B物件指標指給hold物件, 達成A、B兩個物件的指標交換。 (這樣不知道可不可以...) ※ 編輯: youneverknow 來自: 111.67.52.56 (10/29 16:30)

10/29 16:31, , 2F
那如果另外還有指標C已經指向A了怎麼辦?
10/29 16:31, 2F
目前沒有這個情況, 課程習題, 正在卡關中。 this = xPtr; 會報lvalue required as left operand of assignment ※ 編輯: youneverknow 來自: 111.67.52.56 (10/29 16:34)

10/29 16:36, , 3F
那你知道我是你老師嗎 XD
10/29 16:36, 3F
................. 尷尬到不行 ※ 編輯: youneverknow 來自: 111.67.52.56 (10/29 16:37)

10/29 16:37, , 4F
把兩個物件的成員變數交換
10/29 16:37, 4F
稍早做過遇到一點問題: 兩個陣列長度不同, 互換的時候後面被截掉, 或許是我做錯, 我再研究看看。 ※ 編輯: youneverknow 來自: 111.67.52.56 (10/29 16:43)

10/29 16:44, , 5F
大小也要交換?
10/29 16:44, 5F

10/29 16:45, , 6F
不考慮效率的話, std::swap(*this, x) 也可以
10/29 16:45, 6F
嗯...是我先前互換的方式的問題....還剩一個多小時, 我試試看。 解了,謝謝老師。 ※ 編輯: youneverknow 來自: 111.67.52.56 (10/29 17:06)

10/29 17:06, , 7F
為啥物件交換要在元件裡搞?? 怪怪的
10/29 17:06, 7F

10/29 17:10, , 8F
a.swap(b) 很常見吧
10/29 17:10, 8F

10/29 17:16, , 9F
真的耶~ 只是我很少這樣設計
10/29 17:16, 9F

10/29 17:21, , 10F
也可以選擇 friend. 這問題蠻核心的,例如 vector 就有,可以
10/29 17:21, 10F

10/29 17:21, , 11F
想想理由
10/29 17:21, 11F

10/29 17:30, , 12F
可惡我笑了wwwwwwwwwwwwwwwwwwww
10/29 17:30, 12F

10/29 19:19, , 13F
看到推文我笑了
10/29 19:19, 13F

10/29 20:08, , 14F
XDDDDDDD
10/29 20:08, 14F

10/29 20:44, , 15F
有笑有推 XDDDDDDDD
10/29 20:44, 15F

10/29 21:31, , 16F
真的是老師線上教學
10/29 21:31, 16F

10/29 21:39, , 17F
還好是老師,不是老板
10/29 21:39, 17F

10/29 23:11, , 18F
XDDD
10/29 23:11, 18F

10/30 15:11, , 19F
XDDDD
10/30 15:11, 19F

10/30 22:13, , 20F
XDDDDD
10/30 22:13, 20F

10/31 13:04, , 21F
friend少用 容易產生bug
10/31 13:04, 21F
文章代碼(AID): #1IRt1E2A (C_and_CPP)
文章代碼(AID): #1IRt1E2A (C_and_CPP)