作者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/cn.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