C++ Initialize base class' const int in derived class?
c++, class, constants, derived-class
Solution
Simply call the appropriate `Base` constructor in the `Derived`'s initialization list:
Derived(const int index, const std::string name) : Base(index), m_name(name) {}
Problem
I have a constant int variable in my base class, and I would like to initialize responding one in my derived class, with different value (taken as a parameter), is this possible? Here's what I did: ``` // Base.h (methods implemented in Base.cpp in the actual code) class Base { public: Base(const int index) : m_index(index) {} int getIndex() const { return m_index; } private: const int m_index; }; // Derived.h class Derived : public Base { public: Derived(const int index, const std::string name) : m_name(name) {} void setName(const std::string name) { m_name = name; } std::string getName() const { return m_name; } private: std::string m_name; }; ``` But obviously it's asking me for `Base::Base()` which doesn't exist, and if I define it, I will have to give default value for `m_index`, which I don't want to do. Do I have to define `const int m_index` separately in every derived class? Similiar question, but I'm not sure if the static affects this in any way: C++ : Initializing base class constant static variable with different value in derived class?