我自定义了一个类似数组的类,其中重载了括号
T & operator() (int x, int y)
const T & operator() (int x, int y) const
但是这样用括号赋值却不行,报错assignment of read-only location
a(i, j) = value;
请问应该怎么解决?
完全没有问题啊,你不要定义constT&operator()(intx,inty)const这个
返回值都是const了,你怎么可能赋值!
那之前定义的T&operator()(intx,inty)是不是就没用了?constT&operator()(intx,inty)const
后面的const限定符,限定了当前类成员的值不允许被改变,去掉后面的const就好了
回复 @kujishengxia:我看的很多例子都是两个都定义的回复 @奔跑小子:看实际用途,前不加const,表示可以增删,编辑数据;加const,限定后面操作不允许修改数据;回复 @kujishengxia:为什么我看到和很多例子两种都要定义?回复 @奔跑小子:一般用T&operator()(intx,inty),当然返回值加const也是可以的那之前定义的T&operator()(intx,inty)是不是就没用了?版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。