typedef以下类型:指向成员函数的指针Fof" any"具有成员函数F的类

时间:2014-09-17 21:37:11

标签: c++ templates operators member-function-pointers

我实际上是在尝试定义以下类型:X和Y是类型,我想定义指向成员函数Y F(X)const的指针的模板类型" a" T级。

为此,我定义了以下内容:

template<typename T, typename X, typename Y>
struct GenericFunc
{
    typedef Y (T::*F) ( X ) const ;
};

现在如果

class Fct
{
    public:
        Fct( /* something */);
        double F( double ) const
        {
            // stuff...
        }
};

如果我宣布

Fct thef(/* something */);
GenericFunc<Fct, double, double>::F phi ;

我想用thef和phi来获得双倍,但我不能成功。任何的想法 ?什么是F是operator()?

事实上,我可以这样做:

Fct thef(/* something */);
double (Fct::*fptr) (double) const = & Fct::F ; // or double (Fct::*fptr) (double) const = & Fct::operator() ;
double x = 3.14159 ;
double y = (thef.*fptr)(x);

但是我想以通用的方式进行,也就是说,在F的参数的类型X和F的返回类型Y上,在具有成员函数F的类T上是泛型的。 / p>

很多

PS:我使用的是c ++&lt; c ++ 11,这就是我在struct中使用typedef的原因,我想坚持下去。

1 个答案:

答案 0 :(得分:1)

这有效:

Fct thef;
GenericFunc<Fct, double, double>::F phi = &Fct::F;
double x = (thef.*phi)(1);

Online Demo