我有一个模板函数,我想存储指向一个内部的指针std::vector.
该函数如下所示:
template<typename T> void funcName(T& aT, std::vector<std::string>& fileName){...}
Run Code Online (Sandbox Code Playgroud)
现在我想在a里面存储多个指向这类函数的指针std::vector.对于非模板函数,我会这样做:
typedef std::vector<std::string> string_vt;
typedef void func_t(T&, string_vt&);
typedef func_t* funcPointer;
typedef std::vector<funcPointer> funcPointer_vt;
Run Code Online (Sandbox Code Playgroud)
但是模板函数的正确语法是什么?我该如何存放?
编辑:首先,感谢您的快速回复.这是我关于Stack Overflow的第一个问题,所以很抱歉没有提供足够的信息.
T的集合是有限的,它可以是ClassA类型或类型classB.在这些函数模板中,我想用一些硬编码数据对T(所以ClassA或ClassB)进行更改.我有8个这样的函数,它们基本上启动一个默认的构造T,其中包含特定于该函数的数据.在我的程序中,我想启动2*8默认构造的T(8 ClassA和8 ClassB).因此,我运行一个for循环,一个接一个地调用一个函数,用函数的body数据启动我的T对象.
for(int i = 0; i < initT.size(); ++i){
init_T[i]<T>(someT, fileName);
}
Run Code Online (Sandbox Code Playgroud)
for循环具有与向量内部的函数指针一样多的迭代.在每次迭代时,使用一些先前默认构造的T和一些其他参数调用该函数.最后,目标是使用特定于该功能的数据启动8个T.
EDIT2:如果有帮助,这里有一些实际的源代码.在以下函数模板中,我想访问我的函数指针向量,以便调用相应的函数.
template<typename T_Relation, typename T_Relation_Vec, bool row>
void bulk_load(initRelation_vt& aInitFunctions, T_Relation_Vec& aRel_Vec, const bool aMeasure, const uint aRuns, const char* aPath)
{
for(size_t i = 0; i < aRuns; ++i)
{
MemoryManager::freeAll();
aRel_Vec.clear(); …Run Code Online (Sandbox Code Playgroud)