看板 C_and_CPP 關於我們 聯絡資訊
程式碼連結:https://goo.gl/t7nEkR class raw{ private: unt x; unt y; unt len; vector<uch> img; } 可以做到 raw a(3, 3); cout << a[n] << endl; 或是 a[n] = x; 剛好就讀取道 img 對應的位置沒問題 可是我如果想要用二維的方式讀取自己寫了 a.at2d(x, y); 如果圖是[3x3] 那麼 a.at2d(1, 0); 可以讀寫img[3] 現有結構有方法可以把 a.at2d(1, 0); 置換成 a[1][0] 又不影響 a[pos] 嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.127.112.105 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1478167551.A.5ED.html ※ 編輯: hunandy14 (140.127.112.105), 11/03/2016 18:08:10
shadow0326: 拉出class row,重載uch& row::operator [] 11/03 18:42
shadow0326: 以及重載row& raw::operator[] 11/03 18:42
shadow0326: 啊我沒有看到不影響a[pos]的需求 唔 11/03 18:43
shadow0326: 可能可以再讓row能隱式轉換成uch 我覺得很醜就是了 11/03 18:45
CoNsTaR: 如果我理解沒錯的話 你想要用一樣的話做兩件不同的事 你 11/03 19:09
CoNsTaR: 覺得有辦法嗎… 11/03 19:09
想說會不會有什麼不知道特別方法~~ ※ 編輯: hunandy14 (218.173.155.186), 11/03/2016 19:38:58
Caesar08: return一個別的class,支援conversion function與 11/03 19:48
Caesar08: operator[] 11/03 19:48
什麼意思QuQ ※ 編輯: hunandy14 (218.173.155.186), 11/03/2016 21:33:46
ilikekotomi: 凱薩大大講的可以看書 more effective C++ 11/03 22:56
看起來不錯~我會把他看完的~~
ilikekotomi: 裡面有個proxy class在講這件事情 我臨時找不到code 11/03 22:56
CoNsTaR: 咦…原Po的意思不是用[][]的時候把a當作二維,用[]的時 11/03 23:17
CoNsTaR: 候當作一維嗎? 11/03 23:17
ilikekotomi: http://ideone.com/eTTHNU 剛剛大概回想一下 11/03 23:19
ilikekotomi: 因為[][]沒辦法重載所以要分兩段 11/03 23:19
ilikekotomi: 不知道是不是會錯意 11/03 23:19
ilikekotomi: 沒看到沒看到又不影響a[pos] 11/03 23:21
ilikekotomi: 原PO講的情況用( )做會比較簡單 要不影響有我沒想到 11/03 23:23
好屋~
Caesar08: http://ideone.com/Tm4Bgk 11/04 00:36
嗚哇~明天在消化,感謝您~~
Caesar08: 我覺得這不是好寫法。今天要是用3-d array,用一個[]與 11/04 00:48
Caesar08: 三個[],都能知道是甚麼意思。那如果用兩個[],請問是? 11/04 00:48
Caesar08: 用明確一點的function來存取會比你只用[]好 11/04 00:49
對耶!~沒想到 ※ 編輯: hunandy14 (218.173.155.186), 11/04/2016 01:21:36
ilikekotomi: 明天也來看一下 感謝凱薩大大示範 11/04 01:31
ilikekotomi: 大概看懂了 想請問轉型是因為要對應<<所以呼叫的嗎? 11/04 11:00
Caesar08: 是的。不過再額外提供operator=給assign value比較好 11/04 11:19
ilikekotomi: 感謝凱薩大大的回覆 又學到了一課 11/04 20:14
娃~有看沒有很懂,我再慢慢消化QuQ ※ 編輯: hunandy14 (218.173.155.186), 11/05/2016 22:15:48