Указатель функции, указывающий на функцию, которая принимает объект класса шаблона с указанным указателем функции в качестве аргумента шаблона.Возможный?

StackOverflow https://stackoverflow.com/questions/1082552

Вопрос

х__х

Я хочу сделать что-то вроде этого:

typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);

Но я получаю ошибку компиляции:

ошибка C2065:'фп':необъявленный идентификатор

Можно ли это как-то реализовать?

Это было полезно?

Решение

Нет, это не так, потому что тип параметра шаблона будет включать себя.Это привело бы к бесконечной рекурсии в типе.

Если вместо специализации шаблона класса вы принимаете его базовый класс, это вполне возможно.

struct TemplateBase {

};

typedef long (*fpType)(TemplateBase&, HWND, long, long);

template<fpType FP>
struct BaseWindow : TemplateBase {

};


long sampleFunc(TemplateBase &b, HWND hwnd, long wparam, long lparam) {
  ...
}

int main() {
    BaseWindow<sampleFunc> bw;
    sampleFunc(bw, ...);
}

Что ты хочешь с этим делать?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top