C++ 函数ptr到具有模板参数的函数
我如何定义一个函数ptr,它指向一个函数,该函数返回一个布尔值,但接受两个未知(但相等)类型作为参数 应该是这样的,但我的IDE将其标记为错误:C++ 函数ptr到具有模板参数的函数,c++,templates,C++,Templates,我如何定义一个函数ptr,它指向一个函数,该函数返回一个布尔值,但接受两个未知(但相等)类型作为参数 应该是这样的,但我的IDE将其标记为错误: 模板 bool(ptr*)(arg,arg) 我还想把它和一个函数结合起来,这个函数使用这样一个函数ptr来比较它得到的两个参数 比如: 模板 无效函数(参数一、参数二、ptr比较函数) 这样的事情可能吗?您不能使用模板typedef,这似乎是您最初要问的问题。对于采用函数指针的函数,可以执行以下操作: template<class arg>
模板
bool(ptr*)(arg,arg)代码>
我还想把它和一个函数结合起来,这个函数使用这样一个函数ptr来比较它得到的两个参数
比如:
模板
无效函数(参数一、参数二、ptr比较函数)
这样的事情可能吗?您不能使用模板typedef,这似乎是您最初要问的问题。对于采用函数指针的函数,可以执行以下操作:
template<class arg>
void function(arg one,arg two,bool (*comparefunction)(arg,arg))
您不能有模板typedef,这似乎是您最初要问的。对于采用函数指针的函数,可以执行以下操作:
template<class arg>
void function(arg one,arg two,bool (*comparefunction)(arg,arg))
您想做的事情是可能的,通过这种方式:
template<class TArg>
struct funptr
{
typedef bool (type*)(TArg, TArg);
};
template<class TArg>
void function(TArg one,TArg two,typename funptr<TArg>::type compare)
{
}
模板
结构函数
{
类型定义布尔(类型*)(TArg,TArg);
};
模板
void函数(target one,target two,typename funptr::type compare)
{
}
或者,简单地这样做:
template<class TArg>
void function(TArg one, TArg two, bool (*compare)(TArg, TArg) )
{
}
模板
无效函数(目标一,目标二,布尔(*比较)(目标,目标))
{
}
您想做的事情是可能的,通过这种方式:
template<class TArg>
struct funptr
{
typedef bool (type*)(TArg, TArg);
};
template<class TArg>
void function(TArg one,TArg two,typename funptr<TArg>::type compare)
{
}
模板
结构函数
{
类型定义布尔(类型*)(TArg,TArg);
};
模板
void函数(target one,target two,typename funptr::type compare)
{
}
或者,简单地这样做:
template<class TArg>
void function(TArg one, TArg two, bool (*compare)(TArg, TArg) )
{
}
模板
无效函数(目标一,目标二,布尔(*比较)(目标,目标))
{
}
像在另一个问题中一样,必须使用结构
:
template<typename T>
struct Function {
typedef bool (*Ptr)(T, T);
};
模板
结构函数{
类型定义布尔(*Ptr)(T,T);
};
然后你可以这样使用它:
Function<int>::Ptr f = &myfunction;
Function::ptrf=&myfunction;
至于第二个,您可以这样做:
template<class T>
void function(T one, T two, typename Function<T>::Ptr comparefunction)
模板
void函数(t1,t2,typename函数::Ptr comparefunction)
像在另一个问题中一样,必须使用结构
:
template<typename T>
struct Function {
typedef bool (*Ptr)(T, T);
};
模板
结构函数{
类型定义布尔(*Ptr)(T,T);
};
然后你可以这样使用它:
Function<int>::Ptr f = &myfunction;
Function::ptrf=&myfunction;
至于第二个,您可以这样做:
template<class T>
void function(T one, T two, typename Function<T>::Ptr comparefunction)
模板
void函数(t1,t2,typename函数::Ptr comparefunction)
可能重复:我同意你的拼写。但是你应该在“kombine”的拼写上保持一致。(哦,伙计,阿伍德兰德毁了它)那会成为库尔乐队的名字。哦,等等,这是一个乐队的名字。这个问题和链接为重复的问题有什么不同?投票关闭。@Emile-如果预期使用期限只是在模板上下文中使用它,如函数
,那么解决方案与获得模板typedef行为的建议解决方法完全不同。可能重复:我同意你的拼写。但是你应该在“kombine”的拼写上保持一致。(哦,伙计,阿伍德兰德毁了它)那会成为库尔乐队的名字。哦,等等,这是一个乐队的名字。这个问题和链接为重复的问题有什么不同?投票关闭。@Emile-如果预期使用期限只是在模板上下文中使用它,如函数
,那么解决方案与获得模板typedef类行为的建议解决方法大不相同。