Возможно ли, что в С++ есть функция-член, которая является как static, так и virtual? По-видимому, нет простого способа сделать это (static virtual member(); является компиляционной ошибкой), но существует ли хотя бы один способ достижения такого же эффекта?
то есть:
struct Object
{
struct TypeInformation;
static virtual const TypeInformation &GetTypeInformation() const;
};
struct SomeObject : public Object
{
static virtual const TypeInformation &GetTypeInformation() const;
};
Имеет смысл использовать GetTypeInformation() как на экземпляре (object->GetTypeInformation()), так и на классе (SomeObject::GetTypeInformation()), который может быть полезен для сопоставлений и жизненно важных для шаблонов.
Единственные способы, с помощью которых я могу думать, - записать две функции/функцию и константу, для каждого класса или использовать макросы.
Любые другие решения?