Question

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

Est-il possible de le faire en utilisant metaprogramming ou quelque chose modèle? Je pourrais toujours utiliser un pointeur pour rendre la catégorie * si cela aide.

Était-ce utile?

La solution

Création d'un modèle de findByName générique est aussi simple que le remplacement du type spécifique avec un paramètre de modèle:

template<class T>
struct findByName
{
    string name;

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

(Cela suppose que le paramètre est passé par référence, mais vous pouvez changer pour prendre un pointeur comme paramètre si vous préférez.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top