【发布时间】:2018-12-29 07:49:04
【问题描述】:
所以我真的需要一个具有以下结构的类,该类是模板化的,arr 是一个函数指针数组,但我似乎无法弄清楚正确的语法:
--myclass.h--
#include <vector>
template <typename T>
class MyClass {
typedef void (*fptr)(std::vector<T> data);
static void foo(std::vector<T> data);
static void bar(std::vector<T> data);
static void baz(std::vector<T> data);
static const fptr arr[3];
};
--myclass.cpp--
#include "myclass.h"
#include <vector>
template <typename T> void MyClass<T>::foo(std::vector<T> data) { ... }
template <typename T> void MyClass<T>::bar(std::vector<T> data) { ... }
template <typename T> void MyClass<T>::baz(std::vector<T> data) { ... }
template <typename T> MyClass<T>::fptr MyClass<T>::arr[3] = { &foo, &bar, &baz };
如果有帮助,我的最终目标是让第四个成员函数从数组中调用 foo、bar 或 baz,这样我就可以避免多个 if-else 语句的开销(我的实际实现有接近 50 个这样的功能)。有没有更好的方法来做到这一点?
【问题讨论】:
-
您有很多不相关的语法错误(额外的分号、额外的
static关键字、不正确的 typedef、冲突的名称......)。在问你的问题之前解决这些问题。更好的是,提供一个可编译的示例并询问如何添加您想要的内容。 -
你知道templates and headers,是吗?您确定要复制所有函数中的向量吗?
标签: c++ arrays templates static function-pointers