Là, ça m'a troué le C++

L’autre jour je parcourais du code C++ et je suis tombé sur un bout de code qui m’a surpris. Après avoir fouillé dans le Bjarne Stroustrup ED3, j’ai été obligé de me rendre à l’évidence : “le code écrit est correct”. Voilà ce qui m’a surpris :

#include

class MyClass
{
public:
void Test(void)
{
cout

Huhuhu… non, c’est que je me suis intéressé au langage de scripts sous Flashpoint la semaine dernière. J’ai aidé un gars qui avait un peu de mal avec le dev :cool:

D’ailleurs ça m’a donné envie de développer, non pas une mission, mais plutôt une vidéo avec le moteur du jeu :wink:

Pffff … elle est bien loin ma formation d’analyste programmeur :wink: Ca me trou l’cul votre histoire les gars … Et dire qu’aujourd’hui je sais juste faire un script excel et basta ;)(

En tous cas Moktar, si tu joue à OFP comme tu décrit la syntaxe du code ci dessus exposé, et ben on va faire une belle équipe … lol

Non, ça na rien à voir avec Flashpoint.

Ici nous écrivons du code en C++ qui sera compilé pour être exécuté par la suite. Enfin là, le seul intérêt de mon exemple est d’illustrer une facette du C++ mal connue.

Pour ce qui est de Flashpoint, oui c’est vrai ça ressemble (pas taper pour les purites) à la syntaxe des fichiers utilisés pour décrire une mission… enifn ça ressemble… ahemmm disons qu’on retrouve le mot clé « class » ainsi que les accolades et les caractères de signe et puis… c’est tout non ? on trouve aussi les mots clés tels que « if then else » « while do » … dans les fichiers de scripts, mais tout ceci sera interprété par le moteur de Flashpoint et spécifique à ce dernier.

Pourquoi y-t-a-il ressemblance ? bah, pourquoi réinventer une syntaxe à chaque fois que l’on a besoin d’écrire une description et du code ? :wink:

je ne comprend rien à tout ça mais ça sert à flashpoint, non?
Ca ressemble au script pour les missions :wink:

L’essentiel de ce que j’ai présenté n’est pas dans l’utilisation d’un pointeur sur fonction, ça je pense que la majorité des développeurs connait son fonctionnement et son écriture, mais ici c’est un pointeur sur fonction MEMBRE. C’est très différent.

De plus, la variable “pointeur sur fonction membre” déclarée localement, est utilisée comme si elle faisait parti de la classe MyClass, ceci pour pouvoir être déroulée dans le context de l’objet considéré (oMyDear).

Voilà.

C’est du code tout a fait propre : c’est l’utilisation de pointeurs sur des fonctions. L’interet n’est pas evident comme ca pourtant c’est tres puissant, ca permet de faire un code générique.

Ca permet par exemple de passer un pointeur sur une fonction A en parametre d’une autre fonction B et que cette derniere (:alien2: appelle la fonction (A) sans en connaitre le nom. Du coup, pour changer le comportement de la fonction B et qu’elle appelle une autre fonction, il suffit de passer un autre pointeur en parametre…

Pareil :wink:

ahahahaha le c++, language propre :wink: B) :smiley:

c bo. vraiment.

le truc c’est que j’ai chercher a faire un truc comme ca y a deux ans, et que ca c’est finit avec une statique, si j’avais su !!!

(
bon entre nous ca vo pas un bon vieux :
(functype)(monobject->vtabptr[12])(param);
mais c’est rigolo :slight_smile:
)

si si c’est très propre, c’est d’ailleurs un exemple de déclaration de pointeur sur fonction membre et non pas un pointeur sur fonction membre static.

J’ai toujours cru que ce n’était pas possible en fait.

Rah ça me hérisse les poils quand je vois ça. Bouh, que c’est pas propre ! Enfin… si ça marche…