Modello Metaprogrammazione per questo?
-
28-09-2019 - |
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.
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