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?

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

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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top