Appel à une méthode récupérée par pointeur [C++] - C++ - Programmation
Marsh Posté le 24-08-2004 à 11:25:32
ben normal, hein, pv est pas initialisé entre sa déclaration et la ou tu le cast en ITarmed (ton switchInterface modifie le contenue d'une var locale). Pis d'ailleurs tu le delete apres (?)
Marsh Posté le 24-08-2004 à 11:30:14
chrisbk a écrit : ben normal, hein, pv est pas initialisé entre sa déclaration et la ou tu le cast en ITarmed (ton switchInterface modifie le contenue d'une var locale). Pis d'ailleurs tu le delete apres (?) |
Non le delete après c'est une bourde que j'ai ajouté au message... corrigé
Marsh Posté le 24-08-2004 à 11:31:42
si j'etais toi :
Code :
|
Marsh Posté le 24-08-2004 à 11:32:29
Il est initialiser dans CreateInstance (j'avais pas posté)
Code :
|
Code :
|
Marsh Posté le 24-08-2004 à 11:37:47
Ah bein non, ca marche toujours pas :
Code :
|
Code :
|
Marsh Posté le 24-08-2004 à 11:38:56
ben verifie le retour de ton QueryInterface, ce genre de truc
Marsh Posté le 24-08-2004 à 11:43:58
chrisbk a écrit : ben verifie le retour de ton QueryInterface, ce genre de truc |
Il renvoie bien S_OK...
Marsh Posté le 24-08-2004 à 12:05:14
Code :
|
Je suis pas mauvais en C mais encore débutant en C++, mais il me semble que tu défini (ou redéfini) une méthode virtuelle pure ("virtual method() = 0;" ). Ce type de déclaration est employé dans des classes abstraites. Elles ne peuvent pas être employées directement mais uniquement via une classe dérivée dans laquelle il faut obligatoirement redéfinir les méthodes virtuelles pures. Sinon, c'est un peu comme si tu appelais une fonction via un pointeur NULL.
Il faut donc que tu écrives le code de la méthode Open().
Marsh Posté le 24-08-2004 à 12:20:46
lsdyoyo a écrit : Je suis pas mauvais en C mais encore débutant en C++, mais il me semble que tu défini (ou redéfini) une méthode virtuelle pure ("virtual method() = 0;" ). Ce type de déclaration est employé dans des classes abstraites. Elles ne peuvent pas être employées directement mais uniquement via une classe dérivée dans laquelle il faut obligatoirement redéfinir les méthodes virtuelles pures. Sinon, c'est un peu comme si tu appelais une fonction via un pointeur NULL. |
La méthode fait partie de la classe contenue dans la dll compilée que j'utilise. Si je devais ré-écrire le code de la dll, elle ne me servirait à rien...
Il est cependant obligatoire de la déclarer, sinon le compilo râlerait pour classe et méthode inconnnues...
Maintenant peut-être que ma facon de procéder est fausse, je suis pas un spécialiste...
Marsh Posté le 24-08-2004 à 13:55:18
chrisbk a écrit : ben verifie tes appels, la tronche du pointeur retouré, ou exactement ca plante, comment ca plante... |
Ca plante sur l'appel à Open.
Et comment tu vérifie la tronche du pointeur ?
Marsh Posté le 24-08-2004 à 13:57:04
fatypunk a écrit : Et comment tu vérifie la tronche du pointeur ? |
avec un fin debugueur ? Si ca plante *lors* de l'appel et que ton ptr a l'air valide alors verifie ta declaration de ptranslatemachin, des fois que ca debloquerait dans les vtables
Marsh Posté le 24-08-2004 à 11:22:54
Le programme plante lamentablement lors de l'appel à la méthode Open de ITarmedValidator. Quelqu'un a-t-il une idée ?
Méthode SwitchInterface de DllCOM :
Message édité par fatypunk le 24-08-2004 à 13:53:42