Is there a way to force a derived class to use the constructor of the abstract base class? It must not be a real constructor, I have an open mind about creative solutions.
As suggested by other users, you must call the base class constructor into the initializer list of derived class constructor.
But there's another cool solution bringed up by C++11: the inherited constructors:
class Base
{
Base(int Member, string Text) { };
};
class Derived : public Base
{
using Base::Base; // <-- Brings to derived the Base's constructor.
};
But you must assure that your compiler can use C++11 features; and of course, study if the inherited constructor conforms to your requirements instead of using it just because it's cool.
Use initializer list of the derived class' constructor.
class Base
{
Base(int Member, string Text) { //...
}
};
class Derived : public Base
{
Derived(int Member, string Text) : Base(Member, Text) {
// ^^^^^^^^^^^^^^^^^^
// ...
}
};