Bonjour,

Je tente de déclarer une fonction prenant des paramètres différents en entrée. Elle a donc plusieurs signatures différentes. Le problème, c'est qu'il arrive au compilateur de choisir la mauvaise fonction :

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
//fichier.cpp
#include "myWideString.h"
#include "fichier.h" // contient toutes les déclarations 
 
void function(MyWideString str, bool b)
{
	std::cout << str;
	std::cout << b;
}
 
void function(MyWideString str, MyWideString str2)
{
	std::cout << str;
	std::cout << str2;
}
 
void run()
{
	MyWideString str = MyWideString("Coucou");
	MyWideString str2 = L"Salut";
	function(str, str2); // Appelle void function(MyWideString str, bool b)
}
Ici, l'appel à function(str, str2) dans la fonction run est erroné, ce qui m'embête beaucoup. À part caster str2 en MyWideString je ne vois pas ce que je pourrais faire d'autre, et j'avoue que cette solution peu élégante ne me satisfait pas. Comment forcer le programme à choisir la fonction possédant la bonne signature ?

Merci d'avance pour vos réponses.