在类中更改const成员

时间:2015-04-30 14:06:21

标签: c++ initialization const subclass

我想让一个类中的函数更改const int

class Parent 
{
int currentIndex; 
private: 
    initMember(const int& member) 
    {
        member = currentIndex++;
    }

}


class Child 
{
const int Member1;
const int Member2;

    Child () 
    {
        initMember(Member1);
        initMember(Member2);
    }



}

谁编写子类只应声明const int用于索引。实际值应由Parent管理,因为此类使用该值来处理数组中的内容,依此类推。因此,目标是让子类的作者声明,但不要改变(至少不容易)Member1Member2

最好的方法是什么?

2 个答案:

答案 0 :(得分:4)

您可能正在寻找一种在创建时使用父类中的数据成员初始化const成员的方法:

class Parent 
{
    protected:
    int currentIndex; 
};

class Child : public Parent
{
   const int Member1;
   const int Member2;

    Child () : Member1(currentIndex++), Member2(currentIndex++)
    {
    }
};

答案 1 :(得分:1)

成员初始值设定项列表中的非静态const成员必须初始化,之后 不能。 你可以试试这个:

class Child
{
private:
    int _currentIndex;
    const int _member1, _member2;
public:
    Child() :
        _currentIndex(0),
        _member1(_currentIndex++),
        _member2(_currentIndex++)
    {
    }
};