Вопрос

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);
    }
};

(Это предполагает, что параметр пропускается посредством ссылки, но вы можете изменить его, чтобы сделать указатель в качестве параметра, если вы предпочитаете.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top