Передача функции шаблона другой функции, которая принимает аргумент typedef

0

Я пытаюсь передать функцию шаблона другой функции, которая принимает аргумент 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.

У меня нет большого опыта работы с шаблонами, поэтому я не уверен, что не так. Кто-нибудь может мне помочь?

Теги:
templates
typedef

1 ответ

1

вы определили указатель на функцию, который принимает аргумент void, но ваш dosomething имеет аргумент void*. также я думаю, что вы должны объявить свою функцию processDoSomething следующим образом:

void processDoSomething(header<someType, someType>::funcPointer F){
    // code here
}

Edit: также потому, что ваш dosomething является шаблоном, вы должны использовать его как: (я не уверен, извините, я не могу проверить его с помощью кода сейчас)

processDoSomething(&dosomething<someType, someType>);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню