从模板参数中声明功能指针中的模板类中
declare function pointer in templated class from template arguments
我正在尝试从函数原型的模板参数声明函数指针
template <typename ReturnType, typename... Args> class DllFunction {
public:
ReturnType (*fptr_)(Args...);
};
DllFunction<int(int)> f;
但是我得到了这个错误:
错误:C2091:功能返回功能
您正在混合两种不同的方式。
或您声明DllFunction
接收返回和参数类型的variadic列表
template <typename ReturnType, typename... Args> class DllFunction {
public:
ReturnType (*fptr_)(Args...);
};
但是您必须避免使用int(int)
表格调用,并且必须使用
// .........VVV return type
DllFunction<int, int> f;
// ..............^^^ arguments types
或您使用表格ReturnType(Args...)
调用,您必须按以下方式声明DllFunction
对象
template <typename>
class DllFunction;
template <typename ReturnType, typename... Args>
class DllFunction<ReturnType(Args...)> {
public:
ReturnType (*fptr_)(Args...);
};
您也可以使用指针函数表格
template <typename>
class DllFunction;
template <typename ReturnType, typename... Args>
class DllFunction<ReturnType(*)(Args...)> {
public:
ReturnType (*fptr_)(Args...);
};
因此,您可以将decltype()
用于模板类型
int foo (int);
DllFunction<decltype(&foo)> f;
相关文章:
- 类的静态结构指针声明在C++
- 函数指针声明
- 指针声明
- 使用无效指针初始化指针声明符的行为是否未定义?
- 如何将指针声明以在类初始化器中的成员功能并拨打这些指针
- 指针声明和间接寻址之间的区别
- 是否可以将“自动”关键字用作函数指针声明中使用初始化的返回类型
- 与使用指针声明的字符串和C 中的数组相混淆
- 如何在C 中使用不同数据类型的类模板指针声明指针
- 指向STD :: vector,指针声明
- 为什么我们不能泛化指针声明?
- C 返回类型指针声明
- 将结构指针声明为函数的返回类型
- C++ h 和 cpp 文件中的指针声明冲突
- 为什么或何时用指针声明int
- 如何将函数指针声明指向模板函数,其返回类型取决于模板类
- 如何将方法指针声明为Typedef方法参数
- 通过参考或指针声明属性C
- C 指针声明
- 指针声明基础(多维数组指针的赋值)