2016-02-05 133 views
-1

如何调用传递给模板函数参数的函数? 我尝试的功能添加到后,我得到它的工作,所以我可以调用所有功能在矢量,有点像一个回调矢量使用传递给模板函数的参数调用函数

#include <Windows.h> 
#include <iostream> 
#include <functional> 

template <typename... T> 
void RunFunction(std::function<void> f, T... args) 
{ 
    f(args); 
} 

void testFunction(int x, int y) 
{ 
    std::cout << (x + y); 
    return; 
} 


int main() 
{ 
    RunFunction(testFunction, 1, 3); 
} 
+0

'std :: function '是无稽之谈,你需要推导'f''的类型。你也忘了在调用'f'的时候扩展'args'。 – LogicStuff

回答

3

你可能想:

template <typename F, typename... Ts> 
void RunFunction(F f, Ts&&... args) 
{ 
    f(std::forward<Ts>(args)...); 
} 

void testFunction(int x, int y) 
{ 
    std::cout << (x + y); 
} 

int main() 
{ 
    RunFunction(testFunction, 1, 3); 
} 

由于

std::function<void>不是你想要的,而是std::function<void(Ts...)>
f(args);应该是f(args...)

然后Sig不能推断出std::function<Sig>testFunction

+0

哦,哇,那有什么作用,有没有什么机会可以告诉我,我可以如何将它添加到一个std:vector来调用它,在所有具有不同数量的参数的3个函数循环中调用它?或者我应该问一个关于如何做的新问题?谢谢 – ramafe

+0

@ramafe:不清楚你想要什么。抱歉。 – Jarod42

+0

我希望能够将函数+其参数存储在向量中,然后在需要时再调用它。我一直在寻找谷歌找到和即时通讯没有多少运气 – ramafe

相关问题