Есть ли какой-нибудь виртуальный статический член в С++?
Например:
class BaseClass {
public:
BaseClass(const string& name) : _name(name) {}
string GetName() const { return _name; }
virtual void UseClass() = 0;
private:
const string _name;
};
class DerivedClass : public BaseClass {
public:
DerivedClass() : BaseClass("DerivedClass") {}
virtual void UseClass() { /* do something */ }
};
Я знаю, что этот пример тривиален, но если у меня есть вектор сложных данных, который будет всегда одинаковым для всех производных классов, но необходим для доступа из методов базового класса?
class BaseClass {
public:
BaseClass() {}
virtual string GetName() const = 0;
virtual void UseClass() = 0;
};
class DerivedClass : public BaseClass {
public:
DerivedClass() {}
virtual string GetName() const { return _name; }
virtual void UseClass() { /* do something */ }
private:
static const string _name;
};
string DerivedClass::_name = "DerivedClass";
Это решение не удовлетворяет меня, потому что мне нужно переопределить имя участника и его getName() в каждом классе. В моем случае у меня есть несколько членов, которые следуют за действием _name и десятыми производными классами.
Любая идея?