C++ 指向函数的指针,该函数将模板化类的实例作为参数

标签 c++ templates

我在编译类时遇到问题,该类将函数指针作为成员变量。指针指向以类的实例作为参数的函数。

喜欢

template<class T, int N>
double (*f)(Vector<T,N> v);

我收到“错误:数据成员‘f’不能是成员模板”编译器是 gcc 4.2。

编辑

在使用我刚刚拥有的模板之前

double (*f)(Vector v);

这也行

double (*f)(Vector<double,2> v)

但我想要一个函数指针,用于以通用 Vector 作为参数的函数..

最佳答案

使用成员typedef:

template <typename T, int N>
class Vector
{
public:

    /// type of function pointer
    typedef double (*FuncPtr)( const Vector& );

};

// concrete type
typedef Vector<double,10> VecDouble10;

// actual function
double func( const VecDouble10>& );

// usage
VecDouble10::FuncPtr fp = func;

关于C++ 指向函数的指针,该函数将模板化类的实例作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723697/

相关文章:

c++ - 将值传递给函数时调用什么函数

c++ - VC编译C++模板代码时如何设置更严格的编译规则

c++ - ptrdiff_t 可以表示指向同一数组对象的元素的指针的所有减法吗?

c++ - 非模板类的构造函数中的模板参数

c++ - 为什么 std::array 的推导指南不允许不同的类型?

c++ - 没有虚函数的命令模式(C++)

C++:访问仅存在于一个派生类中的变量

c++ - 文本转语音字符串或变量值 (PicoTTS)

c++ - 制作可变参数函数,它采用任意数量的 void 仿函数

templates - 在 Twig 的父作用域中设置变量