Bonjour, j'ai un soucis avec GCC 4.7.2 (windows)
Je crée une class A (avec un attribut) et une class B (qui hérite de la class A, avec une fonction virtual)
Je crée un objet B, et un pointeur de méthode d'objet B que je converti en pointeur de méthode A
Et quand j'appelle ce pointeur, crash
Je vous donne le code :
Alors, si je supprime l'attribut de la class A, plus de problème... Ou encore, si j'enlève le virtual à ma fonction, plus de problème non plus...
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
18
19
20
21
22
23
24
25
26
27
28
29 // Class A struct A { int m_value; }; // Class B struct B : public A { virtual void foo() { std::cout << "Hello World!" << std::endl; } }; // Main int main() { // Création de l'objet B object; // Pointeur de méthode d'objet B std::function<void (B*)> func_t = &B::foo; // Pointeur de méthode d'objet A (convertion de B en A) std::function<void (A*)>* func = reinterpret_cast< std::function<void (A*)>* >( &func_t ); // Appel de la fonction (*func)(&object); getwchar(); return 0; }
Mais bon, cela ne m'arrange absolument pas !
J'aimerais donc savoir si vous avez des problèmes avec votre compilo et le qu'elle vous utilisez
Et si possible comment régler ce problème ?
En réalité, j'ai un tableau de pointeur de méthode d'objet qui hérite de la class A et ma class A doit obligatoirement contenir un attribut (histoire de ne pas changer la conception)
Voilà, je vous remercie de votre aide (y) !
Partager