c++ - 由于 const 成员,'operator =' 函数不可用

标签 c++

处理这个问题的最佳方法是什么?我希望“x”保持常量。

class Foo 
{
public:
    Foo(int x) : x(x) { }
    const int x;
};

void main()
{
    Foo a(0), b(1);
    b = a; // error C2582: 'operator =' function is unavailable in 'Foo'
}

最佳答案

x 设为私有(private)。添加一个公共(public)函数,例如 int getX() 以返回值。例如:

class Foo
{
public:
    Foo(int x) : _x(x) {}
    int getX(){return _x;}
private:
    int _x;
};

现在更改 x 的唯一方法是调用构造函数,这是您想要的行为(我认为)。

关于c++ - 由于 const 成员,'operator =' 函数不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007782/

相关文章:

c++ - Pc Lint,如何使用 init() 为类抑制错误 613(可能使用空指针)

c++ - 在二维 vector 的特定位置插入

c++ - 当一个参数是函数的返回值时调用 pow() 时出现链接器错误

c++ - 加载 HBITMAP 并将其转换为 OpenGL 纹理

c++ - 什么时候私有(private)构造函数不是私有(private)构造函数?

c++ - 什么时候在不牺牲正确性的情况下有意识地利用未指定的行为会带来好处?

c++ - 是否可以在没有用户输入的情况下跳过 getline()?

类 POD 数据的 C++ 保证和名称,支持 memcpy

c++文本解码器解码超过要求

c++ - 为什么这个编译,而不是链接?