2010-11-27 4 views
-1
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); 
    } 
}; 

Gibt es eine Möglichkeit, dies mithilfe der Vorlage Metaprogrammierung oder etwas zu tun? Ich könnte immer einen Zeiger benutzen, um es Kategorie * zu machen, wenn das hilft.Vorlage Metaprogrammierung für diese?

+1

Was genau versuchen Sie zu tun? Suchen Sie nach einer bestimmten Kategorie oder einem Eintrag in einer Liste? – Reinderien

Antwort

5

eine allgemeine findByName Vorlage zu erstellen ist so einfach wie die spezifische Art mit einem Template-Parametern ersetzt:

template<class T> 
struct findByName 
{ 
    string name; 

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

(Dies nimmt der Parameter als Referenz übergeben wird, aber man könnte es einen Zeiger als das nehmen ändern Parameter, wenn Sie bevorzugen.)