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

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

4

1 に答える 1

5

汎用findByNameテンプレートの作成は、特定の型をテンプレート パラメーターに置き換えるのと同じくらい簡単です。

template<class T>
struct findByName
{
    string name;

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

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

于 2010-11-27T01:33:51.693 に答える