Я пытаюсь передать функцию шаблона другой функции, которая принимает аргумент typedef.
Например, у меня есть функция
В header.h
template<typename A, typename B>
class header: public baseHeader<A, B>{
public:
typedef void (* funcPointer)(void);
// and more...
}
В source.cxx
template<typename A, typename B>
void dosomething(void *arg){
// code here
}
void processDoSomething(funcPointer F){
// code here
}
template<typename A, typename B>
void work(){
processDoSomething(dosomething);
}
Извините, что код очень грязный, но то, что я пытаюсь сделать, это передать функцию шаблона другой функции, которая принимает аргумент typedef. Я получаю ошибку "unregolved overloaded function type" в processDoSomething (dosomething), говоря, что она не соответствует аргументу typdef.
У меня нет большого опыта работы с шаблонами, поэтому я не уверен, что не так. Кто-нибудь может мне помочь?
вы определили указатель на функцию, который принимает аргумент void, но ваш dosomething
имеет аргумент void*
. также я думаю, что вы должны объявить свою функцию processDoSomething
следующим образом:
void processDoSomething(header<someType, someType>::funcPointer F){
// code here
}
Edit: также потому, что ваш dosomething
является шаблоном, вы должны использовать его как: (я не уверен, извините, я не могу проверить его с помощью кода сейчас)
processDoSomething(&dosomething<someType, someType>);