我想让一个类中的函数更改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
管理,因为此类使用该值来处理数组中的内容,依此类推。因此,目标是让子类的作者声明,但不要改变(至少不容易)Member1
和Member2
。
最好的方法是什么?
答案 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++)
{
}
};