Soit le code suivant
Ca compile avec VC++Express mais pas avec gcc. Pourquoi?
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 class A { public: A(){} void MaMethode(){std::cout<<"coucou\n";} }; int main() { A a; typedef void (A::*tdMethodeSurA)(); tdMethodeSurA MethodeSurA; MethodeSurA = &(A::MaMethode); (a.*MethodeSurA)(); }
La ligne de commande gcc est:
L'erreur est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 g++ -c -o Debug\obj\main.o -g -O0 -mthreads -W -Wall -DNOPCH -Wno-ctor-dtor-privacy -MTDebug\obj\main.o -MFDebug\obj\main.o.d -MD Sources/main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sources/main.cpp:82: error: invalid use of non-static member function `void A::MaMethode()' Sources/main.cpp:82: error: parenthesis around 'A::MaMethode' cannot be used to form a pointer-to-member-function
Partager