2015-11-01 35 views
-2

Function1将指针指向std :: vector(未指定类型)和指向其他函数模板(Function2)的指针。 Function2接受两个对象(类型如std :: vector类型)并返回bool。如何制作这些模板?如何使函数模板,它采用std :: vector和指针功能?

例如:

bool Function2(int i1, int i2); 

void Function1(std::vector<int>* v1, Function2); 

我尝试:

template <typename type> bool FunctionP(type, type); 
template <typename tVector> void FunctionT(tVector* pVector, FunctionP pFunkcja); 

它提供:

'FunctionP' is not a type 
+1

为什么我得到了 '-1'?有什么不清楚?请告诉我。 –

+0

你试过了吗?如果它不起作用,你会得到什么错误? –

+0

[请将此信息添加到您的问题](http://stackoverflow.com/posts/33467037/edit)请不要作为评论。 –

回答

0

我认为这造成线

template <typename tVector> void FunctionT(tVector* pVector, FunctionP pFunkcja); 

FunctionP是一个函数的模板。您只能存储指向模板函数特化的指针,但不能存储实际的模板。

所以,只要使用正常的指针作为参数。例如

bool Function2(int i1, int i2); 

void Function1(std::vector<int>* v1, bool (*f)(int, int)); 
+0

所以我必须专注于每种类型的模板,我想在矢量和功能中使用什么? –

1
bool Function2(int a, int b) 

template <typename T> 
void Function1(std::vector<T>* vector, std::function < bool(T, T)> callback) 

电话与专业化

std::vector<int> vec{1,2,3,4,5}; 

Function1<int>(&vec, std::bind(Function2, std::placeholders::_1, std::placeholders::_2)); 
相关问题