Pregunta

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

¿Hay una manera de hacer esto utilizando metaprogramming plantilla o algo? Siempre podría usar un puntero para que sea la categoría * si eso ayuda.

¿Fue útil?

Solución

Creación de una plantilla findByName genérico es tan simple como la sustitución del tipo específico con un parámetro de plantilla:

template<class T>
struct findByName
{
    string name;

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

(Esto asume que el parámetro se pasa por referencia, pero se puede cambiar para tomar un puntero como parámetro, si lo prefiere.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top