Предполагая, что у меня есть класс myClass
определяется следующим образом:функция член указатель шаблона класса
template<typename Type> class myClass {
public:
Type* pParent;
void (Type::*func_exe)();
void execute();
};
И я хочу, чтобы использовать его в качестве параметра для функции fGiveMeYourClass
, которая использует его для вызова это член-функция execute
void fGiveMeYourClass (?myClass?){
..?.. ->execute();
}
, так как я не забочусь о том, что Type
на самом деле в этом шаблоне и хотят только член-функция-указатель от этого класса, я бы хорошо с чем-то вроде ЬурейеГо, чтобы признать, что член-функцию-указатель как p arameter из fGiveMeYourClass
Я попробовал уже, но мои attepts казалось неудачу:
template <typename Type> typedef void(myClass<Type>::*pMyClassExec)();
void fGiveMeYourClass(pMyClassExec pointerToMemberFunction);
Есть ли другой способ это может быть достигнуто или я делаю что-то не так?
Почему не просто 'шаблон недействительным fGiveMeYourClass (MyClass сопзЬ & х) {х .Execute(); } '? Неясно, куда должен войти указатель функции. –
Ну, я знаю, что могу просто создать шаблон всей функции, но поскольку этот класс используется как параметр множества других функций, что означало бы превращение их всех в шаблоны, я выгляжу как самое чистое решение для меня. Я думал, что может быть более простой способ ... особенно потому, что я забочусь только об одной функции-члене этого класса, которая работает одинаково независимо от того, что такое «Тип». –
Вы можете объявить 'execute' как виртуальную функцию в нетемплифицированном базовом классе и передать указатель/ссылку на базу. –