Rechercher : dans
Par :

[C++] Pointeur sur méthode + héritage

Dernière réponse le 3 oct 2008 à 19:54:58 Bleast, le 20 sep 2008 à 23:15:47 
 Signaler ce message aux modérateurs

Bonjour,

j'ai une classe mère d'interface comme suit (je ne garde que la partie qui nous intéresse) :

namespace ZenZiAPI
{
class IModule
{
public:
typedef bool (IModule::*p_callback)(ITools&);
}
}

et une classe fille avec 2 méthode comme suit (les méthode sont simplifiées):

bool ModulePHP::GetPHP(Tools &_EOTools)
{
return (true);
}

const std::vector<std::pair<ZenZiAPI::IModule::p_callback, ZenZiAPI::hookPosition>>& ModulePHP::getCallbacks()
{
this->_LPHook.first = static_cast<ZenZiAPI::IModule::p_callback>(&ModulePHP::GetPHP);
}

L'erreur se situe sur la ligne suivante :

static_cast<ZenZiAPI::IModule::p_callback>(&ModulePHP::GetPHP);

Erreur Compilo :

Error 4 error C2440: 'static_cast' : cannot convert from 'bool (__thiscall ModulePHP::* )(Tools &)' to 'ZenZiAPI::IModule::p_callback'

J'ai passer la journée dessus je vois pas comment résoudre ce problème

Est ce que quelqu'un saurait pourquoi ?

merci
Ce n'est pas par ce que les choses sont difficile que l'on ose pas, 
c'est par ce que l'on ose pas qu'elle sont difficile.

Configuration: Windows XP
Firefox 3.0.1

Meilleures réponses pour « [C++] Pointeur sur méthode + héritage » dans :
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
Les pointeurs en langage C VoirDéfinition d'un pointeur Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des...
Héritage et polymorphisme VoirHéritage et polymorphisme La notion d’héritagexe "héritage" est très facile à comprendre. En C++, on dit qu’une classe définie à partir d’une classe existante et à laquelle on ajoute une fonctionnalité dérive de la classe initiale. Cette dernière...

1

Bleast, le 21 sep 2008 à 16:28:53

Personne ?
Ce n'est pas par ce que les choses sont difficile que l'on o­se pas, 
c'est par ce que l'on ose pas qu'elle sont difficile.

Répondre à Bleast

3

 Spouwny, le 3 oct 2008 à 19:54:58
  • +1

Le type de ta callback devrait etre un ITools& comme dans ton typedef :)

Répondre à Spouwny