Bonjour.

J'ai le code suivant (qui est une version simplifié d'une gestion de variant que j'essaye de mettre en place).

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using namespace std;
#include <stdio.h>
 
class ebovar
{
public:
	void *pvalue;
 
	ebovar()
	{
		pvalue = (void*)new int(0);
	}
 
// integer function
	ebovar(int v)
	{
		pvalue = (void*)new int(v);
	}
	operator int()
	{
		return *(int *)pvalue;
	}
};
 
ebovar operator+(ebovar left_op, ebovar right_op)
{
	return (ebovar)((int)left_op + (int)right_op);
}
 
ebovar Addition(ebovar a, ebovar b)
{
	return a + b;
} 
 
int main(int _argc, char **_argv);
 
int main(int _argc, char **_argv)
{
	ebovar _x = (ebovar)10;
	ebovar _y = (ebovar)12;
	ebovar _result = Addition(_x, _y);
 
	int _z = 32;
	ebovar _result2 = Addition(_x, _z);
 
	_z = Addition(_y, _z);
 
	printf("%d\n", *(int *)_result.pvalue);
	printf("%d\n", *(int *)_result2.pvalue);
	printf("%d\n", _z);
}
J'arrive pas a comprendre pourquoi Addition(_x, _z); ne génère pas d'erreur alors qu'il n'y a pas de fonction définie pour prendre en charge une (ebovar + int).
Le plus étrange c'est que tout cela fonctionne exactement comme je le souhaite et m'affiche bien
22
42
44

Que se passe t-il ?