gpt4 book ai didi

c++ - typedef 以下类型 : Pointer to a member function Fof "any" class having a member function F

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:17 24 4
gpt4 key购买 nike

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

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

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 得到一个 double,但我不能成功。任何想法 ?什么是 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 的类 T 上,在 F 的参数的类型 X 上,以及在 F 的返回类型 Y 上泛型。

非常感谢

PS:我使用的是 c++ < c++11,这就是我在结构中使用 typedef 的原因,我想坚持这一点。

最佳答案

这个有效:

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

Online Demo

关于c++ - typedef 以下类型 : Pointer to a member function Fof "any" class having a member function F,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25900745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com