gpt4 book ai didi

c++ - 指向模板函数的指针

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:37 24 4
gpt4 key购买 nike

我需要将我的函数作为参数传递,但它应该是模板函数。例如。

template <class rettype, class argtype> rettype test(argtype x)
{
return (rettype)x;
}

我需要将此函数用作方法的参数。

template <class type,class value> class MyClass
{
// constructors, etc

template <class type,class value> void myFunc(<function should be here with parameters > ) {
rettype result = function(argtype);
}
};

这样可以吗?

最佳答案

只是在语言上要清楚——没有什么叫做指向模板函数的指针。有指向从函数模板实例化的函数的指针。

我想这就是您要找的:

template <class type, class value> struct MyClass
{
template <class rettype, class argtype>
rettype myFunc( rettype (*function)(argtype), argtype v)
{
return function(v);
}
};

这是一个简单的程序及其输出。

#include <iostream>

template <class rettype, class argtype> rettype test(argtype x)
{
return (rettype)x;
}

template <class type,class value> struct MyClass
{
template <class rettype, class argtype>
rettype myFunc( rettype (*function)(argtype), argtype v)
{
return function(v);
}
};


int main()
{
MyClass<int, double> obj;
std::cout << obj.myFunc(test<int, float>, 20.3f) << std::endl;
// ^^^ pointer to a function instantiated
// from the function template.
}

输出

20

关于c++ - 指向模板函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28706052/

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