Bonsoir,
je tombe sur un résultat étrange lors d'utilisation de pointeur de fonction generique.
J'utilise deux pointeurs de fonctions génériques de la forme suivante:
que je passe en tant que paramètre respectivement aux fonctions suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 template<class T> void AVLTree<T>::Fonction(T &data) { cout << "val : " << data.getA().getX() << " " << data.getA().getY() << " " << data.getB().getX() << " " << data.getB().getY() << " " << "Type : " << data.getA().getType() << " " << "Num : " << data.getA().getNum() << endl; } template <class T> void AVLTree<T>::GetNumSeg(T &data, QVector<T> &v, Point &p) { if(data.getNum() == p.m_num_seg_1 || (data.getNum() == p.m_num_seg_2)) v.append(data); }
Pour le premier template et pointeur de fonction, l'appel suivant est correct:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void parcours_prefixe(CNode<T> *, void (*f) (T &)); void parcours_prefixe_get(CNode<T> *, QVector<T> &, Point &, void (*f) (T &, QVector<T> &, Point &));
où sweep_line et un AVLTree<Segment>, getRacine() retourne un CNoeud<T> *
mais lorsque je fait l'appel de parcours_prefixe_get suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sweep_line.parcours_prefixe(sweep_line.getRacine(), Fonction);
j'obtiens une erreur de undefined alors que twoseg est bien un QVector<Segment>, event un point.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 sweep_line.parcours_prefixe_get(sweep_line.getRacine(), twoseg, event, GetNumSeg);
Est ce que l'erreur vient du fait que j'utilise des paramêtres passé à parcours_prefixe_get dans GetNumSeg ?
Merci de vos éclaircissements.
Partager