2

次の型を使用するテンプレート クラス CFoo があります。

enum My_Types {t1,t2};

によって与えられた専門化で

template<My_Types T>
class CFoo
{
    public:
    CFoo()
    {
        std::cerr<<"ERROR:....";
        exit(1);
    }
};

template<>
class CFoo<t1>
{
    ....
};

さらに、 CFoo オブジェクトを引数として使用する関数があります

template<class T>
void foo1 ( const T &CfooObj,...);

ここで、foo1 へのポインターが必要なので、テンプレート引数を指定する必要があります。

void (*foo1_pointer) ( const CFoo< t1 >&,...);

しかし、以下は正しくないようです (「関数 foo1 を変換する一致はありません...」):

foo1_pointer=&foo1;

このテンプレート関数のポインタを正しく渡す方法は?

4

3 に答える 3

0

あなたはただ書くことができますfoo1<CFoo<t1>>。またはfoo1(g ++ 4.7.2で動作します)。

于 2013-02-18T21:30:44.080 に答える
0

割り当ては次のようになります。

foo1_pointer = &foo1<CFoo<t1>>;
于 2013-02-18T21:32:26.183 に答える