我有一个提供相应时间值的类。我有一个方法可以更改m_time
(在hh,mm,ss)[ms]中,但最后将其声明为const
。因此,我需要更改属性m_time
,但不能!我怎么可能解决这个问题?
这是我的代码:
class CMeasurementValue
{
private:
double m_value;
unsigned int m_time;
public:
CMeasurementValue(double value=0,unsigned int time=0);
CMeasurementValue(double value,unsigned int hh,unsigned int mm , double ss);
double getValue() const ;
unsigned int getTime() const;
void calculateTime(unsigned int& hh , unsigned int& mm , double& ss ) const;
bool operator <(const CMeasurementValue& rop)const ;
friend ostream& operator <<( ostream& out, const CMeasurementValue& rop);
void print();
};
void CMeasurementValue::calculateTime(unsigned int& hh , unsigned int& mm , double& ss) const
{
// ??
}
您可以这样声明您的成员m_time
mutable
:
mutable
来自文档:
- mutable-允许修改声明为可变的类成员即使包含对象被声明为const。
但是,如果标记为class CMeasurementValue {
private:
double m_value;
mutable unsigned int m_time;
// ...
};
的功能calculateTime
应该更改成员之一的状态,那么为什么随后将其标记为const
?
声明为
const
请参见mutable unsigned int m_time;
但是您提到的函数似乎是变量而不是访问器,所以为什么将其声明为When have you used C++ 'mutable' keyword??
查看差异const