Возможно ли, что в С++ есть функция-член, которая является как 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()
), который может быть полезен для сопоставлений и жизненно важных для шаблонов.
Единственные способы, с помощью которых я могу думать, - записать две функции/функцию и константу, для каждого класса или использовать макросы.
Любые другие решения?