有没有办法防止在 cpp 中破坏 const 承诺?

问题描述

有没有办法防止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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...