如何在声明为const的方法中更改类成员

问题描述 投票:-1回答:2

我有一个提供相应时间值的类。我有一个方法可以更改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
{
    // ??
}
c++ const
2个回答
0
投票

您可以这样声明您的成员m_time mutable

mutable

来自文档:

  • mutable-允许修改声明为可变的类成员即使包含对象被声明为const。

但是,如果标记为class CMeasurementValue { private: double m_value; mutable unsigned int m_time; // ... }; 的功能calculateTime应该更改成员之一的状态,那么为什么随后将其标记为const


0
投票

声明为

const

请参见mutable unsigned int m_time;

但是您提到的函数似乎是变量而不是访问器,所以为什么将其声明为When have you used C++ 'mutable' keyword?

查看差异const

© www.soinside.com 2019 - 2024. All rights reserved.