Bonjour à vous tous!
Depuis un certain temps, je me suis mis dans l'idée de faire communiquer du C avec C++. L'idée étant de faire exécuter d'appeler une méthode C++ depuis une fonction C, dans un autre fichier

Voici le code:
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
30
 
// PartCPP.h: interface for the CPartCPP class.
//
//////////////////////////////////////////////////////////////////////
 
#if !defined(AFX_PARTCPP_H__1C91159B_25CE_4F3A_AF02_38000EB380E7__INCLUDED_)
#define AFX_PARTCPP_H__1C91159B_25CE_4F3A_AF02_38000EB380E7__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
#include "test.c"
#include <stdio.h>
 
class CPartCPP  
{
public:
	CPartCPP();
	virtual ~CPartCPP();
 
 
	static int f(char * chaine) { printf("%s\n",chaine);return 0;};
    void* g(char x, float y) {};
    void* h(char x, float y) {};
    void* i(char x, float y) {};
 
};
 
#endif // !defined(AFX_PARTCPP_H__1C91159B_25CE_4F3A_AF02_38000EB380E7__INCLUDED_)
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
30
31
 
// PartCPP.cpp: implementation of the CPartCPP class.
//
//////////////////////////////////////////////////////////////////////
 
#include "PartCPP.h"
 
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
 
CPartCPP::CPartCPP()
{
        //Création de la structure qui contiendra le pointeur vers la méthode
	st_inter = new T_intermediaire();
        //Affectation du pointeur et précision du schéma d'appel de la méthode
	st_inter->fct = (int (__cdecl *)(char *))(&CPartCPP::f);
}
 
CPartCPP::~CPartCPP()
{
	delete st_inter;
}
 
 
void main()
{
	CPartCPP *PartCPP;
	PartCPP = new CPartCPP();
        functest();
}
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
 
#ifndef _INTER
#define _INTER 1
 
typedef struct _Tintermediaire
{
        //Pointeur vers la fonction qui va nous interresser : fonction qui prend 
        //en parametre un char* et qui retourne un int.
	int(*fct)(char*);
} T_intermediaire;
 
static T_intermediaire* st_inter;
 
#endif
 
void functest()
{
        // Appel à la méthode, ET CA MARCHE!!!
	(*st_inter->fct)("Coucou les enfants!Dites non a la drogue!");
}
Ma question est la suivante : Serait il possible de savoir si ce code est "sans danger"?
J'utilise un cast (int (__cdecl *)(char *)) et je n'ai aucune idée des répercutions possibles.
Pourrais je avoir l'avis d'une personne qui s'y connais.

Merci d'avance