Шаблон метапрограммирования для этого? - PullRequest
0 голосов
/ 27 ноября 2010
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);
    }
};

Есть ли способ сделать это с помощью шаблонного метапрограммирования или еще чего-нибудь? Я всегда могу использовать указатель, чтобы сделать его категорией *, если это поможет.

1 Ответ

5 голосов
/ 27 ноября 2010

Создание общего шаблона findByName так же просто, как замена определенного типа параметром шаблона:

template<class T>
struct findByName
{
    string name;

    bool operator()(const T &a)
    {
        return (a.name == name);
    }
};

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

...