问题描述
有没有办法防止C++ "const x" `class Player private member` from being modified
,这是我的简单代码
#include <iostream>
#define println(x) std::cout << x << std::endl
class Player
{
friend std::ostream& operator<<(std::ostream& os,Player& data);
int x,y;
int speed;
public:
Player(int x,int y,int speed): x(x),y(y),speed(speed){}
void Move(int x,int y)
{
this->x += x * speed;
this->y += y * speed;
}
const int* const get_x() const
{
return &x;
}
};
std::ostream& operator<<(std::ostream& os,Player& data)
{
os << data.x << std::endl;
os << data.y << std::endl;
return os;
}
int main()
{
Player player(1,1,1);
player.Move(1,-1);
const int* const x = player.get_x();
int* const breaking_const = (int* const)x;
*breaking_const = 15;
println(*player.get_x());
}
我希望只能在类中修改 x 和 y。 有什么建议么?谢谢:)
编辑:我看到一些评论说 return a copy
之类的,这不是我的问题。
我在问是否有办法防止 x 被 the same code
改变。
谁不知道我可以只返回 x 的副本并且它已经解决了?
显然这不是要问的问题-_-。
我的问题换一种方式:如果我尝试运行上面的代码,我可以做些什么会导致错误或消息? 有什么我可以添加到课程中以确保 x 不会从外部改变的东西吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)