質問

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

テンプレートメタプログラムなどを使用してこれを行う方法はありますか?ポインターを使用して、それが役立つ場合はカテゴリ*にすることができます。

役に立ちましたか?

解決

ジェネリックを作成します findByName テンプレートは、特定のタイプをテンプレートパラメーターに置き換えるのと同じくらい簡単です。

template<class T>
struct findByName
{
    string name;

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

(これは、パラメーターが参照によって渡されると仮定しますが、必要に応じてパラメーターとしてポインターを取得するように変更できます。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top