error C2166: l-value specifies const object
来源:互联网 发布:手机淘宝如何开店 编辑:程序博客网 时间:2024/05/22 09:50
关键字mutable是C++中一个不常用的关键字,他只能用于类的非静态和非常量数据成员
我们知道一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,
对像的状态也会随之发生变化!
如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是
该函数不会修改类的非静态数据成员.但是有些时候需要在该类函数中对类的数据成员
进行赋值.这个时候就需要用到mutable关键字了
例如:
class Demo
{
public:
Demo(){}
~Demo(){}
public:
bool getFlag() const
{
m_nAccess++;
return m_bFlag;
}
private:
int m_nAccess;
bool m_bFlag;
};
int main()
{
return 0;
}
编译上面的代码会出现 error C2166: l-value specifies const object的错误
说明在const类型的函数中改变了类的非静态数据成员.
这个时候需要使用mutable来修饰一下要在const成员函数中改变的非静态数据成员
m_nAccess,代码如下:
class Demo
{
public:
Demo(){}
~Demo(){}
public:
bool getFlag() const
{
m_nAccess++;
return m_bFlag;
}
private:
mutable int m_nAccess;
bool m_bFlag;
};
int main()
{
return 0;
}
这样再重新编译的时候就不会出现错误了!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gengxt2003/archive/2008/07/26/2715746.aspx
- error C2166: l-value specifies const object
- error C2166: l-value specifies const object 转
- l-value specifies const object
- error C2102: '&' requires l-value
- L-value
- Field error in object 'xxx' on field 'XXX': rejected value [];
- value object
- l-value and r-value
- L-value和R-value
- Value object business object
- error C2105: '++' needs l-value 数组名自增时遇到
- RedHat Linux卸载rpm包遇到error: specifies multiple packages
- RedHat Linux卸载rpm包遇到error: specifies multiple packages
- error: "libevent-1.1a-3.2.1" specifies multiple packages
- 卸载rpm会遇到的error:specifies multiple packages
- rpm包卸载时error: specifies multiple packages
- error: ... specifies a non-existent file for the CFBundleExecutable
- Value object and Reference object
- 计算一个日期是否在2个日期之间
- 古代文论真可谓是我的一处死穴
- ant教程
- 经验管理与量化管理
- l-value specifies const object
- error C2166: l-value specifies const object
- ant教程
- 77种互联网盈利创新模式(9)
- 支教笔记 我在泸定的那十天
- 心情随感
- My first Blog!
- Linux下开启/关闭防火墙命令(转载)
- CentOS 5 Linux安装图解
- sscanf