我知道问为什么? 对这个网站来说是个糟糕的问题,因为我们不知道。不过,我的意思是用它作为询问的口语替代,有哪些可能的原因?
我自然而然地发现自己在写作,
foo->[i];
并惊讶地发现它不起作用。我的意思是写:
(*foo)[i];
我相信大多数人已经明白我的意思,但要清楚,我想
bar.subscript(i);
foo->subscript(i);
类似于
bar.operator[](i);
foo->operator[](i);
但这似乎并非如此。为什么?我确定我一定是以错误的方式看待某些事情,但我不知道是什么。我知道的理论很少,所以外行的解释将不胜感激。
如果我的类比没有明显的错误,那么语言的设计者可能将运算符排除在外的一些可能原因是什么? 是否模棱两可? (如果是这样,会误认为是什么?)
根据@chris 的建议,我想在编辑中加入一些评论,因为我并没有像我应该说的那样清楚:
The OP is proposing operator->[], a combination of the two.
– chris
He's asking why the thing he wants doesn't exist, not why the code he's trying to write doesn't work.
– Matthew 'Cogwheel' Orlando
最佳答案
operator->的权限必须是成员(member)名。我猜一个显式的 operatorXYZ 算作成员的名称,所以 foo->operator[] 是允许的。但是,诸如 [] 之类的随机标记不能算作成员的名称,因此 foo->[i] 是不允许的。
关于c++ - 为什么 ->[] 在 C++ 中不是运算符? (取消引用数组指针的下标运算符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163347/