作者hunandy14 (Charlott.HonG)
看板C_and_CPP
標題[問題] 重載[][] 下標運算子(架構已定)
時間Thu Nov 3 18:05:49 2016
程式碼連結:
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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1478167551.A.5ED.html
※ 編輯: hunandy14 (140.127.112.105), 11/03/2016 18:08:10
1F:→ shadow0326: 拉出class row,重載uch& row::operator [] 11/03 18:42
2F:→ shadow0326: 以及重載row& raw::operator[] 11/03 18:42
3F:→ shadow0326: 啊我沒有看到不影響a[pos]的需求 唔 11/03 18:43
4F:→ shadow0326: 可能可以再讓row能隱式轉換成uch 我覺得很醜就是了 11/03 18:45
5F:推 CoNsTaR: 如果我理解沒錯的話 你想要用一樣的話做兩件不同的事 你 11/03 19:09
6F:→ CoNsTaR: 覺得有辦法嗎… 11/03 19:09
想說會不會有什麼不知道特別方法~~
※ 編輯: hunandy14 (218.173.155.186), 11/03/2016 19:38:58
7F:→ Caesar08: return一個別的class,支援conversion function與 11/03 19:48
8F:→ Caesar08: operator[] 11/03 19:48
什麼意思QuQ
※ 編輯: hunandy14 (218.173.155.186), 11/03/2016 21:33:46
9F:→ ilikekotomi: 凱薩大大講的可以看書 more effective C++ 11/03 22:56
看起來不錯~我會把他看完的~~
10F:→ ilikekotomi: 裡面有個proxy class在講這件事情 我臨時找不到code 11/03 22:56
11F:→ CoNsTaR: 咦…原Po的意思不是用[][]的時候把a當作二維,用[]的時 11/03 23:17
12F:→ CoNsTaR: 候當作一維嗎? 11/03 23:17
14F:→ ilikekotomi: 因為[][]沒辦法重載所以要分兩段 11/03 23:19
15F:→ ilikekotomi: 不知道是不是會錯意 11/03 23:19
16F:→ ilikekotomi: 沒看到沒看到又不影響a[pos] 11/03 23:21
17F:→ ilikekotomi: 原PO講的情況用( )做會比較簡單 要不影響有我沒想到 11/03 23:23
好屋~
嗚哇~明天在消化,感謝您~~
19F:→ Caesar08: 我覺得這不是好寫法。今天要是用3-d array,用一個[]與 11/04 00:48
20F:→ Caesar08: 三個[],都能知道是甚麼意思。那如果用兩個[],請問是? 11/04 00:48
21F:→ Caesar08: 用明確一點的function來存取會比你只用[]好 11/04 00:49
對耶!~沒想到
※ 編輯: hunandy14 (218.173.155.186), 11/04/2016 01:21:36
22F:→ ilikekotomi: 明天也來看一下 感謝凱薩大大示範 11/04 01:31
23F:→ ilikekotomi: 大概看懂了 想請問轉型是因為要對應<<所以呼叫的嗎? 11/04 11:00
24F:→ Caesar08: 是的。不過再額外提供operator=給assign value比較好 11/04 11:19
25F:→ ilikekotomi: 感謝凱薩大大的回覆 又學到了一課 11/04 20:14
娃~有看沒有很懂,我再慢慢消化QuQ
※ 編輯: hunandy14 (218.173.155.186), 11/05/2016 22:15:48