Un puntatore funzione che indica una funzione che riceve un oggetto di una classe modello con detto puntatore a funzione come argomento di template. Possibile?
-
23-08-2019 - |
Domanda
x__x
Io voglio fare qualcosa di simile:
typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);
Ma ottengo un errore di compilazione:
C2065 errore: 'fp': non dichiarato identificatore
E 'possibile implementare questa in qualche modo?
Soluzione
No, non è, perché il tipo di parametro template includerebbe in sé. Ciò comporterebbe un ricorsione infinito nel tipo.
Se al posto del modello di classe di specializzazione, si accetta una classe base di esso, che è molto possibile
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, ...);
}
Che cosa si vuole fare con questo?
Altri suggerimenti
Dal relative sezione dei link in questa pagina molto: come posso typedef un puntatore a funzione che prende in funzione del suo tipo come argomento?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow