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

奔跑小子 发布于 2017/02/08 07:04
阅读 1K+
收藏 0

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

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

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

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

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

a(i, j) = value;

请问应该怎么解决?

加载中
0
stxy0509
stxy0509

完全没有问题啊,你不要定义const T & operator() (int x, int y) const这个

返回值都是const了,你怎么可能赋值!

奔跑小子
那之前定义的T & operator() (int x, int y) 是不是就没用了?
0
店小二的忧伤
店小二的忧伤

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

后面的const限定符,限定了当前类成员的值不允许被改变,去掉后面的const就好了

奔跑小子
回复 @kujishengxia : 我看的很多例子都是两个都定义的
店小二的忧伤
店小二的忧伤
回复 @奔跑小子 : 看实际用途,前不加const,表示可以增删,编辑数据;加const,限定后面操作不允许修改数据;
奔跑小子
回复 @kujishengxia : 为什么我看到和很多例子两种都要定义?
店小二的忧伤
店小二的忧伤
回复 @奔跑小子 : 一般用T & operator() (int x, int y),当然返回值加const也是可以的
奔跑小子
那之前定义的T & operator() (int x, int y) 是不是就没用了?
返回顶部
顶部