Шаблон MetaProgramming для этого?
-
28-09-2019 - |
Вопрос
struct findCategoryByName
{
string name;
bool operator()(const category& a)
{
return (a.name == name);
}
};
struct findEntryByName
{
string name;
bool operator()(const entry* a)
{
return (a->name == name);
}
};
Есть ли способ сделать это, используя шаблон MetaProgramming или что-то? Я всегда мог использовать указатель, чтобы сделать его категорию *, если это поможет.
Решение
Создание универсального findByName
Шаблон так же просто, как замена определенного типа с параметром шаблона:
template<class T>
struct findByName
{
string name;
bool operator()(const T &a)
{
return (a.name == name);
}
};
(Это предполагает, что параметр пропускается посредством ссылки, но вы можете изменить его, чтобы сделать указатель в качестве параметра, если вы предпочитаете.)
Не связан с StackOverflow