开发者社区> 问答> 正文

C++如何使用括号进行赋值?报错

我自定义了一个类似数组的类,其中重载了括号

T & operator() (int x, int y)

const T & operator() (int x, int y) const

但是这样用括号赋值却不行,报错assignment of read-only location

a(i, j) = value;

请问应该怎么解决?

展开
收起
爱吃鱼的程序员 2020-06-08 17:11:41 854 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    完全没有问题啊,你不要定义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)是不是就没用了?
    2020-06-08 17:12:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载