我创建了一个有两个 get 方法的类,一个 const 和一个非常量。const 方法是公共的,因此用户可以查询向量。非常量方法是受保护的,所以我可以用它来修改我需要的数据。
但是,当我尝试使用该类并调用 get 方法时,编译器会抱怨非常量方法受到保护。相反,我必须使用 const_cast 将对象强制转换为 const,这样我才能获得公共方法。
有没有办法解决这个问题?既然有公共方法,为什么编译器不自己进行强制转换?如果我删除受保护的版本并只保留 const 版本,它可以正常工作,因此在这种情况下它会进行强制转换。转换为 const 总是安全的。它消除了 constness 是一个问题。