у меня есть функция, которая одинаково обрабатывает данные для разных типов данных, чтобы не плодить лишнего кода решил обойтись шаблонами, где в качестве класса передавать класс с нужными наборами методов
при этом для каждого типа нужен будет свои методы
в итоге получается следующий код (упрощённый):
template <class IExtractor>
bool MyFunc(...)
{
return IExtractor::size();
}
и думал сделать следующим IExtractor универсальным следующим образом
class IBaseExtractor
{
public:
static virtual int size() const = 0;
};
class CExtractor1: public IBaseextractor
{
public:
static int size() const {return 1;}
};
class CExtractor2: public IBaseextractor
{
public:
static int size() const {return 10;}
};
const bool res1 = MyFunc<CExtractor1>();
const bool res1 = MyFunc<CExtractor2>();
Но похоже в C++ виртуальный статический метод сделать нельзя? Или я что-то криво делаю - можно ли как-то это обойти?
P.S.
Я понимаю, что можно было бы просто слепить 2 класса CExtractor1
и CExtractor2
, но хотелось бы сделать более красиво - т.е. явно показать на уровне компиляции какие методы нужны
P.P.S.
Чтобы не удваивать код (что происходит при шаблонах) можно было бы член класса передавать как один из параметров функции, но это тоже немного криво, поскольку мне не нужен экземпляр класса, нужен только свой набор методов.
Хотя если бы такое понадобилось, то пришлось бы наверное использовать экземпляр класса как параметр, хотя мне кажется это криво и лучше было бы отойти от этого
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При разработке под iphone на Swifte возникла необходимость вызвать функцию на C++С этой задачей легко справились
Я учу с++ и хочу создать своего чат-бота для telegram на с++! Посоветуйте пожалуйста какой нибудь материал на эту темуP
Можно ли скомпилированный бинарный java-файл запустить с помощью С++? Без system!
Хочу создать андроид приложения для сайта, сайт не мойПриложение будет парсить необходимые данные с сайта и предоставлять пользователю,...