首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类中函数不能声明为const,该怎么处理

2012-03-05 
类中函数不能声明为const在一个类中定义如下一个函数voidWorkList::show(){for(std::list Work ::iterat

类中函数不能声明为const
在一个类中定义如下一个函数
void   WorkList::show()  
{
for(std::list <Work> ::iterator   elem   =   works.begin();
elem   !=   works.end();   elem++)
{
(*elem).showNumber();
cout   < <   '   ';
}
cout   < <   endl;
}

但改成
void   WorkList::show()   const
{...}
  却会报错(已经在类的声明中也改成const了).这是为什么?
定义的WorkList类的成员变量只有
std::list <Work>   works

这是为什么?   函数中并没有修改works的值..

[解决办法]
void WorkList::show() const
它的意思是不可以修改类的成员
[解决办法]
楼上的正确
std::list <Work> ::iterator 非常量迭代器可能会修改成员变量
WorkList::showNumber() 也许要为常量函数

const成员函数需要保证函数体内所有操作都不会修改到成员变量,任何潜在的可以修改成员变量的操作都会导致编译时的错误

热点排行