Domanda

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

C'è un modo per farlo utilizzando il modello metaprogrammazione o qualcosa del genere? Potrei sempre usare un puntatore per renderlo categoria * se funziona.

È stato utile?

Soluzione

Creazione di un modello findByName generica è così semplice come la sostituzione del tipo specifico con un parametro di modello:

template<class T>
struct findByName
{
    string name;

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

(Questo presuppone che il parametro viene passato per riferimento, ma si potrebbe cambiare per prendere un puntatore come parametro, se si preferisce).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top