<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - C++</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide technique sur le langage C++. Avant de poster -> F.A.Q
C++]]></description>
		<language>fr</language>
		<lastBuildDate>Fri, 17 Apr 2026 12:07:10 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - C++</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Mod pour MAME</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183198&amp;goto=newpost</link>
			<pubDate>Tue, 14 Apr 2026 08:02:00 GMT</pubDate>
			<description>Bonjour, 
 
Je souhaite...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je souhaite ajouter une fonctionnalité à MAME:<br />
Lorsque un jeux de tuiles est affiché (touche F4), ajouter la possibilité de le sauvegarder dans un fichier PNG via la touche F12) tout en gardant les informations de transparence.<br />
<br />
J'ai repris le code source de Steve Moody (<a rel="nofollow" href="https://eab.abime.net/showthread.php?t=41610&amp;page=3" target="_blank">https://eab.abime.net/showthread.php?t=41610&amp;page=3</a>) pour l'intégrer au code source,<br />
voir la classe gfx_writer sur mon github (<a rel="nofollow" href="https://github.com/Deedolith/mame-gfxsave/tree/refs/heads/gfx-save/src/frontend/mame/ui" target="_blank">https://github.com/Deedolith/mame-gf...ontend/mame/ui</a>).<br />
<br />
Cela fonctionne bien, par contre je n'ai pas compris comment détecter les pixels transparents.<br />
La documentation de MAME indique comment gérer la transparence, mais d'après ce que j'ai compris, cela concerne l'affichage sur un écran, aucune idée si cela peut être adapté pour un bitmap:<br />
<a rel="nofollow" href="https://wiki.mamedev.org/index.php?title=Using_MAME%27s_tilemap_system" target="_blank">https://wiki.mamedev.org/index.php?t...tilemap_system</a></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>deedolith</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183198/c-cpp/cpp/mod-mame/</guid>
		</item>
		<item>
			<title>Avis sur vieux livres C++ offerts</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182653&amp;goto=newpost</link>
			<pubDate>Sun, 15 Mar 2026 14:34:00 GMT</pubDate>
			<description>Bonjour à tous, 
Un voisin...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
Un voisin qui déménage m'a offert sa collection de livres d'informatiques. Comme j'ai un projet personnel en C++ cette année, je souhaite votre avis sur la pertinence des ces ouvrages pas particulièrement récents :<br />
<br />
<ul><li style="">C++ en action de D. Ryan Stephens  (2006)</li><li style="">Professional Multicore Programming: Design and Implementation for C++ Developers (2008)</li><li style="">C++ Template Metaprogramming de David Abrahams (2004)</li><li style="">Beyond the C++ Standard Library: An Introduction to Boost (2005)</li><li style="">undle of Algorithms in C++, Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms (2002)</li><li style="">Modern C++ Design: Generic Programming and Design Patterns Applied (2001)</li><li style="">Secure Programming Cookbook for C and C++ (2003)</li><li style="">The Boost Graph Library: User Guide and Reference Manual (2002)</li><li style="">La programmation orientée de Hugues Bersini (2008)</li><li style="">Standards de programmation en C++ de Herb SUTTER et Andrei ALEXANDRESCU</li></ul><br />
J'ai un peu étudié le C++ il y a longtemps, je ne sais pas si les librairies, et la pratique du C++ ont tellement évoluées que ces livres sont périmés ou à éviter. Par contre pour mon projet j'aurai à travailler sur des graphes.<br />
Votre avis ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>Quami</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182653/c-cpp/cpp/avis-vieux-livres-cpp-offerts/</guid>
		</item>
		<item>
			<title><![CDATA[Incompréhension erreur "invalid conversion from 'DWORD' {aka 'long unsigned int'} to 'DWORD* (*)()"]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181073&amp;goto=newpost</link>
			<pubDate>Sat, 20 Dec 2025 15:35:37 GMT</pubDate>
			<description><![CDATA[Bonjour j'ai un problème de...]]></description>
			<content:encoded><![CDATA[<div>Bonjour j'ai un problème de compilation.<br />
<br />
J'ai isolé mon problème avec le petit source suivant :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;windows.h&gt;</span>
&nbsp;
<span style="color: #0000ff;">void</span> ToCallVoid<span style="color: black;">&#40;</span>DWORD <span style="color: #0080ff;">errno</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span> <span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> Caller<span style="color: black;">&#40;</span>DWORD <span style="color: #0080ff;">errno</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	ToCallVoid<span style="color: black;">&#40;</span><span style="color: #0080ff;">errno</span><span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> wmain <span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">wchar_t</span> **argv, <span style="color: #0000ff;">wchar_t</span> **envp<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span> <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>; <span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<br />
J'ai l'erreur suivante :<br />
<br />
<div style="margin: 20px; margin-top: 5px"><pre class="alt2" style="border: 1px inset; padding: 5px">.\src\testp.cpp:6:20: error: invalid conversion from 'DWORD' {aka 'long unsigned int'} to 'DWORD* (*)()' {aka 'long unsigned int* (*)()'} [-fpermissive]
    6 |         ToCallVoid(errno);
      |                    ^~~~~
      |                    |
      |                    DWORD {aka long unsigned int}
.\src\testp.cpp:3:23: note: initializing argument 1 of 'void ToCallVoid(DWORD* (*)())'
    3 | void ToCallVoid(DWORD errno) { }
      |                       ^</pre></div>J'utilise : <b>c++.exe</b> (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders, r3) 15.2.0<br />
<br />
J'ai essayé différentes options de compilation mais toujours le même résultat.<br />
Le plus simple : <b>c++.exe -o .\src\testp.cpp.obj -c .\src\testp.cpp</b><br />
donne bien la même erreur.<br />
<br />
Quelqu'un a-t-il une explication ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>jmblib</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181073/c-cpp/cpp/incomprehension-erreur-invalid-conversion-from-dword-aka-long-unsigned-int-to-dword/</guid>
		</item>
		<item>
			<title>Problème SDL_ttf et Code Blocks</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180754&amp;goto=newpost</link>
			<pubDate>Wed, 03 Dec 2025 10:08:11 GMT</pubDate>
			<description><![CDATA[Bonjour, 
J'utilise Code...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
J'utilise Code Blocks 20.03 (compilateur GNU GCC compiler) avec la librairie graphique SDL2 (SDL-devel-2.0.3-mingw). Je veux faire de l'affichage de texte et utilise SDL2_ttf-devel-2.0.18-mingw.<br />
Mes 3 premières lignes sont #include &lt;SDL2/SDL.h&gt;  #include &lt;SDL2/SDL_ttf.h&gt;  ou #include &lt;SDL_ttf.h&gt; et #include &lt;stdio.h&gt;.<br />
Quand je click sur Build pour vérifier mon programme j'ai &quot;fatal erreur: SDL.h : No such file or directory&quot; que cela soit dans la prog main.cpp ou SDL_ttf.h alors que ce dernier fichier est dans : Project - Build options - Projet Texte -linker settings (dans plusieurs endroits) comme le montre le fichier Projet Texte linker settings.jpg.<br />
J'ai aussi mes 3 fichiers comme le montre Projet Texte Search dir.jpg que cela sur linker avec lib ou compiler avec include et mon fichier SDL2.dll est mis dans le répertoire de mon projet.<br />
Est-ce que je pourrais avoir une solution pour résoudre ce problème?<br />
Merci.</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p672309d1764756374/c-cpp/cpp/probleme-sdl_ttf-code-blocks/projet-texte-linker-setting.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p672310d1764756390/c-cpp/cpp/probleme-sdl_ttf-code-blocks/projet-texte-search-dir.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>slmh1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180754/c-cpp/cpp/probleme-sdl_ttf-code-blocks/</guid>
		</item>
		<item>
			<title>sstream et saisie cin</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180677&amp;goto=newpost</link>
			<pubDate>Fri, 28 Nov 2025 00:26:33 GMT</pubDate>
			<description>Bonjour, 
 
pourquoi b est...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
pourquoi b est toujours à 0 ?<br />
<br />
une idée&#8239;?<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;iostream&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;string&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;sstream&gt;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;a= &quot;</span>;
  <span style="color: #0000ff;">int</span> a;
  std::string saisie;
  std::stringstream geek;
  std::cin&gt;&gt;saisie;
  geek&lt;&lt;saisie;
  geek&gt;&gt;a;
  geek.flush<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;b= &quot;</span>;
  <span style="color: #0000ff;">int</span> b;
  std::cin&gt;&gt;saisie;
  geek&lt;&lt;saisie;
  geek&gt;&gt;b;
  std::cout&lt;&lt;a&lt;&lt;<span style="color: #FF0000;">' '</span>&lt;&lt;b&lt;&lt;std::endl;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0">$ ./a.out 
a= <span style="color: #cc66cc;">56</span>
b= <span style="color: #cc66cc;">12</span>
<span style="color: #cc66cc;">56</span> <span style="color: #cc66cc;">0</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>emmesse</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180677/c-cpp/cpp/sstream-saisie-cin/</guid>
		</item>
		<item>
			<title>boucle infinie presque résolu</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179753&amp;goto=newpost</link>
			<pubDate>Thu, 09 Oct 2025 11:45:54 GMT</pubDate>
			<description>Bonjour, 
 
Lorsque je rentre...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Lorsque je rentre un caractere non numérique quand cin demande un chiffre, j'ai une boucle infinie.<br />
avec cin.clear et cin ignore, ça va mieux. Mais si je rentre quoi que ce soit, le programme ne va pas plus loin:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">  <span style="color: #0000ff;">do</span><span style="color: black;">&#123;</span>
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;minimum 2, maximum &quot;</span>&lt;&lt;max_joueurs&lt;&lt;<span style="color: #FF0000;">&quot; :&quot;</span>;
    std::cin.ignore<span style="color: black;">&#40;</span>std::numeric_limits&lt;std::streamsize&gt;::max<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>,<span style="color: #FF0000;">'</span><span style="color: #800000;">\n</span><span style="color: #FF0000;">'</span><span style="color: black;">&#41;</span>;
    std::cin.clear<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    std::cin&gt;&gt;nbjoueurs;
  <span style="color: black;">&#125;</span><span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span>nbjoueurs&lt;<span style="color: #cc66cc;">2</span> || nbjoueurs&gt;max_joueurs<span style="color: black;">&#41;</span>;</pre></td></tr></table></code><hr />
</div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">$ ./a.out 
combien de joueur ? minimum <span style="color: #cc66cc;">2</span>, maximum <span style="color: #cc66cc;">6</span> :<span style="color: #cc66cc;">2</span></pre></td></tr></table></code><hr />
</div>une idée?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>emmesse</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179753/c-cpp/cpp/boucle-infinie-presque-resolu/</guid>
		</item>
		<item>
			<title>GCC 16 améliore les diagnostics avec des erreurs C++ plus claires et une sortie HTML</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179721&amp;goto=newpost</link>
			<pubDate>Wed, 08 Oct 2025 08:29:40 GMT</pubDate>
			<description>*GCC 16 introduit des...</description>
			<content:encoded><![CDATA[<div><b><font size="4">GCC 16 introduit des améliorations en matière de diagnostic, notamment des messages d'erreur C++ plus clairs, une sortie HTML expérimentale pour les rapports interactifs et une analyse statique améliorée</font></b><br />
<br />
<b>GCC 16 introduit des améliorations majeures en matière de diagnostic, notamment des messages d'erreur C++ plus clairs, une sortie HTML expérimentale pour les rapports interactifs, le passage au format SARIF et une analyse statique améliorée pour la détection des erreurs d'exécution. Présentées par David Malcolm de Red Hat, ces mises à jour visent à rationaliser le débogage et à stimuler la productivité des développeurs dans le cadre de projets complexes.</b><br />
<br />
La GNU Compiler Collection (GCC) est une collection de compilateurs du projet GNU qui prend en charge divers langages de programmation, architectures matérielles et systèmes d'exploitation. La Free Software Foundation (FSF) distribue GCC en tant que logiciel libre sous licence GNU General Public License (GNU GPL). GCC est un composant clé de la chaîne d'outils GNU qui est utilisée pour la plupart des projets liés à GNU et au noyau Linux. Avec environ 15 millions de lignes de code en 2019, GCC est l'un des plus grands programmes libres existants. Il a joué un rôle important dans la croissance des logiciels libres, à la fois comme outil et comme exemple.<br />
<br />
Dans le monde en constante évolution du développement logiciel, la GNU Compiler Collection (GCC) continue de repousser les limites, avec sa prochaine version 16 qui devrait introduire des améliorations significatives aux outils de diagnostic qui pourraient remodeler la façon dont les développeurs déboguent et optimisent le code. Selon un rapport récent, ces mises à jour s'appuient sur des années d'améliorations itératives, en mettant l'accent sur des messages d'erreur et d'avertissement plus clairs et plus exploitables. Au cœur de ces progrès se trouve David Malcolm, un ingénieur de Red Hat réputé pour ses contributions au cadre de diagnostic de GCC, qui a dévoilé les détails lors de sa présentation au GNU Tools Cauldron 2025 à Porto, au Portugal.<br />
<br />
Les améliorations ciblent des domaines clés tels que les diagnostics C++, où GCC 16 vise à fournir des commentaires plus précis sur les structures de code complexes, réduisant ainsi la frustration souvent associée à la programmation intensive en modèles. Il ne s'agit pas seulement de changements cosmétiques, mais aussi de doter les développeurs d'outils qui accélèrent le dépannage dans les projets à grande échelle, des applications d'entreprise aux noyaux open source.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p670810d1759918356/c-cpp/cpp/gcc-16-ameliore-diagnostics-erreurs-cpp-plus-claires-sortie-html/1.jpg/" border="0" alt="Nom : 1.jpg
Affichages : 10107
Taille : 67,7 Ko"  style="float: CONFIG" /></div><br />
<b>Sortie HTML : une révolution pour l'analyse visuelle</b><br />
<br />
L'une des fonctionnalités remarquables de GCC 16 est la prise en charge expérimentale de la sortie des diagnostics au format HTML, une initiative qui promet de rendre l'analyse des erreurs plus interactive et plus conviviale. Cette option permet aux compilateurs de générer des rapports richement formatés, avec des hyperliens, des surlignages codés par couleur et des extraits de code intégrés, ce qui permet aux développeurs de naviguer parmi les problèmes aussi facilement que sur une page web. Activée via un indicateur spécifique, cette sortie HTML se positionne comme une alternative supérieure pour la révision post-compilation, en particulier dans les environnements d'équipe où le partage des données de diagnostic est crucial.<br />
<br />
En complément, GCC 16 abandonne progressivement son ancienne sortie JSON pour les diagnostics au profit de la norme SARIF (Static Analysis Results Interchange Format), qui offre une meilleure interopérabilité avec les outils modernes d'analyse de code. Comme l'a expliqué Malcolm dans son exposé, cette évolution reflète une tendance plus large de l'industrie vers des formats standardisés et lisibles par machine qui s'intègrent de manière transparente aux pipelines d'intégration continue.<br />
<br />
<b>Améliorations de l'analyse statique et au-delà</b><br />
<br />
En approfondissant la question, les mises à jour s'étendent à l'option -fanalyzer, qui alimente les capacités d'analyse statique de GCC. Les améliorations en cours dans ce domaine comprennent une meilleure détection des erreurs d'exécution potentielles, telles que les déréférencements de pointeurs nuls ou les débordements de tampon, avec des diagnostics qui intègrent désormais davantage d'informations contextuelles comme les chemins d'exécution. Ces améliorations sont particulièrement importantes pour les logiciels critiques pour la sécurité dans des secteurs tels que l'aérospatiale et l'automobile, où la détection précoce des bogues peut éviter des pannes coûteuses.<br />
<br />
De plus, libdiagnostics, la bibliothèque sous-jacente qui gère le rendu des sorties de GCC, bénéficie de mises à niveau qui améliorent sa flexibilité. Les développeurs peuvent s'attendre à des comportements de diagnostic plus personnalisables, permettant des flux de travail sur mesure qui s'alignent sur les besoins spécifiques des projets, qu'il s'agisse de systèmes embarqués ou de calcul haute performance.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p670811d1759918362/c-cpp/cpp/gcc-16-ameliore-diagnostics-erreurs-cpp-plus-claires-sortie-html/2.jpg/" border="0" alt="Nom : 2.jpg
Affichages : 2236
Taille : 67,1 Ko"  style="float: CONFIG" /></div><br />
<b>Implications pour l'écosystème des développeurs</b><br />
<br />
Pour les initiés du secteur, ces changements témoignent de la volonté de GCC de rester compétitif face à des compilateurs tels que Clang. En privilégiant la facilité d'utilisation, grâce à des fonctionnalités telles que les sorties HTML et le traitement raffiné du C++, GCC 16 pourrait réduire les obstacles pour les nouveaux venus tout en permettant aux vétérans de s'attaquer à des bases de code de plus en plus complexes. Le travail de Malcolm met en évidence l'investissement de Red Hat dans les outils open source, ce qui pourrait influencer l'évolution des diagnostics dans d'autres compilateurs.<br />
<br />
À l'avenir, la sortie complète de GCC 16 l'année prochaine devrait stimuler son adoption dans les distributions Linux et au-delà, favorisant ainsi un écosystème plus robuste. Bien que des défis subsistent, tels que la garantie de la rétrocompatibilité, ces révisions diagnostiques positionnent GCC comme un pilier avant-gardiste dans le domaine du génie logiciel.<br />
<br />
<b>Source</b> : <a rel="nofollow" href="https://conf.gnu-tools-cauldron.org/opo25/talk/NQNCEW/" target="_blank">David Malcolm au GNU Tools Cauldron 2025</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Pensez-vous que cette amélioration est crédible ou pertinente ?<br />
:fleche: Quel est votre avis sur le sujet ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://programmation.developpez.com/actu/371465/La-version-15-1-de-GCC-est-disponible-avec-un-compilateur-COBOL-un-meilleur-support-pour-les-langages-de-programmation-C-Cplusplus-et-Rust-ainsi-que-de-nombreuses-autres-ameliorations/" target="_blank">La version 15.1 de GCC est disponible avec un compilateur COBOL, un meilleur support pour les langages de programmation C, C++ et Rust, ainsi que de nombreuses autres améliorations</a><br />
<br />
:fleche: <a href="https://cpp.developpez.com/actu/376035/Le-projet-Safe-Cplusplus-visant-a-doter-le-langage-d-un-modele-de-securite-inspire-de-Rust-est-mis-de-cote-pour-donner-la-priorite-aux-Profils-une-alternative-controversee-proposee-par-le-createur-du-langage/" target="_blank">Le projet Safe C++, visant à doter le langage d'un modèle de sécurité inspiré de Rust, est mis de côté pour donner la priorité aux « Profils ». Une alternative controversée proposée par le créateur du langage</a><br />
<br />
:fleche: <a href="https://programmation.developpez.com/actu/370108/GCC-15-arrive-COBOL-et-Itanium-sont-integres-tandis-qu-ALGOL-68-est-juge-inadapte-a-l-ere-moderne-les-langages-modernes-doivent-allier-solidite-technique-et-reponse-aux-besoins-concrets/" target="_blank">GCC 15 arrive : COBOL et Itanium sont intégrés, tandis qu'ALGOL-68 est jugé inadapté à l'ère moderne. Les langages modernes doivent allier solidité technique et réponse aux besoins concrets</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p670810d1759918356/c-cpp/cpp/gcc-16-ameliore-diagnostics-erreurs-cpp-plus-claires-sortie-html/1.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p670811d1759918362/c-cpp/cpp/gcc-16-ameliore-diagnostics-erreurs-cpp-plus-claires-sortie-html/2.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>Jade Emy</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179721/c-cpp/cpp/gcc-16-ameliore-diagnostics-erreurs-cpp-plus-claires-sortie-html/</guid>
		</item>
		<item>
			<title><![CDATA[Array d'un struct]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179640&amp;goto=newpost</link>
			<pubDate>Fri, 03 Oct 2025 10:47:49 GMT</pubDate>
			<description>Bonjour 
 
Alors voilà, je...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
Alors voilà, je code un programme pour un ESP32-P4 (MCU), et je suis face à une erreur de débutant que je n'arrive pas à corriger.<br />
<br />
Dans mon driver:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> rex_device_struct<span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">bool</span> detected = <span style="color: #0080ff;">false</span>;
  <span style="color: #0000ff;">char</span> type<span style="color: black;">&#91;</span><span style="color: #cc66cc;">10</span><span style="color: black;">&#93;</span>;
<span style="color: black;">&#125;</span>;
&nbsp;
&nbsp;
rex_device_struct* RexDriver::rexDetected<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  rex_device_struct *devices_struct = <span style="color: black;">&#40;</span>rex_device_struct *<span style="color: black;">&#41;</span>ps_malloc<span style="color: black;">&#40;</span><span style="color: #0000ff;">sizeof</span><span style="color: black;">&#40;</span>rex_device_struct*<span style="color: black;">&#41;</span> * REX_MAX_DEVICES_SUPPORTED<span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint8_t</span> i; i &lt; REX_MAX_DEVICES_SUPPORTED; i++<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    devices_struct<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.detected = <span style="color: #0080ff;">false</span>;
    strcpy<span style="color: black;">&#40;</span>devices_struct<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.type, <span style="color: #FF0000;">&quot;&quot;</span><span style="color: black;">&#41;</span>;    
  <span style="color: black;">&#125;</span>
&nbsp;
  devices_struct<span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#93;</span>.detected = <span style="color: #0080ff;">true</span>;
  strcpy<span style="color: black;">&#40;</span>devices_struct<span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#93;</span>.type, <span style="color: #FF0000;">&quot;REX12D&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
  <span style="color: #0000ff;">return</span> <span style="color: black;">&#40;</span>rex_device_struct*<span style="color: black;">&#41;</span>devices_struct;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>Quand je fait appel à cette fonction, je me retrouve avec des données faussées, respectivement le champ &quot;detected&quot; est mal évalué (il ne devrait afficher que le Rex device 1).<br />
Pire quand j'appelle la commande free pour libérer la mémoire, le MCU plante (HEAP corrompu).<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
rex_device_struct *devices_struct = rex.rexDetected<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">uint8_t</span> i = <span style="color: #cc66cc;">0</span>; i &lt; REX_MAX_DEVICES_SUPPORTED; i++<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>devices_struct<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.detected<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
          Serial.printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Rex device: %u: %s<span style="color: #800000;">\n</span>&quot;</span>, i, devices_struct<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.type<span style="color: black;">&#41;</span>;
        <span style="color: black;">&#125;</span>       
      <span style="color: black;">&#125;</span>
      Serial.println<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>String<span style="color: black;">&#41;</span><span style="color: #FF0000;">&quot;Memory available in PSRAM : &quot;</span> +ESP.getFreePsram<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>+<span style="color: #FF0000;">&quot;/&quot;</span>+ESP.getPsramSize<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
      <span style="color: #808080;">//free(devices_struct);</span></pre></td></tr></table></code><hr />
</div>Résultat:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			Rex device: 0: REX12D<br />
Rex device: 1: &#65533;&#65533;&#65533;&#65533;&#10922;&#65533;<br />
Rex device: 3: &#65533;&#65533;&#47594;&#65533;Z&lt;&#65533;&#65533;<br />
Rex device: 5: &#65533;&#65533;&#1003;&#65533;&#65533;&#65533;&#65533;xV<br />
Rex device: 9: &#43694;&#65533;=&#65533;&#65533;&#65533;&#65533;<br />
Rex device: 11: &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;*&#65533;<br />
Rex device: 13: &#65533;&#43562;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;<br />
Rex device: 15: &#65533;&#65533;=&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;
			
		<hr />
	</div>
</div><br />
Bref, comme vous l'aurez deviner je débute en C++, et je m'arrache les cheveux.<br />
<br />
Quelqu'un saurait m'aider à corriger l'erreur?<br />
<br />
Merci!</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>soa</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179640/c-cpp/cpp/array-d-struct/</guid>
		</item>
		<item>
			<title>je ne maîtrise pas tres bien les tuples</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179579&amp;goto=newpost</link>
			<pubDate>Tue, 30 Sep 2025 19:34:29 GMT</pubDate>
			<description>Bonjour 
 
je voudrai faire...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
je voudrai faire une liste dont les élément soient des std::tuple&lt;bien_immobilier,int&gt;.<br />
Mais après j'ai du mal à accéder à ce int:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0">revenus.cpp: In function &#145;<span style="color: #0000ff;">int</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>&#146;:
revenus.cpp:<span style="color: #cc66cc;">17</span>:<span style="color: #cc66cc;">34</span>: error: no match <span style="color: #0000ff;">for</span> &#145;<span style="color: #0000ff;">operator</span><span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>&#146; <span style="color: black;">&#40;</span>operand types are &#145;__gnu_cxx::__alloc_traits&lt;std::allocator&lt;std::tuple&lt;bien_immobilier, <span style="color: #0000ff;">int</span>&gt; &gt;, std::tuple&lt;bien_immobilier, <span style="color: #0000ff;">int</span>&gt; &gt;::value_type&#146; <span style="color: black;">&#123;</span>aka &#145;std::tuple&lt;bien_immobilier, <span style="color: #0000ff;">int</span>&gt;&#146;<span style="color: black;">&#125;</span> <span style="color: #0000ff;">and</span> &#145;<span style="color: #0000ff;">int</span>&#146;<span style="color: black;">&#41;</span>
   <span style="color: #cc66cc;">17</span> |   std::cout&lt;&lt;revenus_joueur<span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#93;</span>&lt;&lt;std::endl;
      |                                  ^
m</pre></td></tr></table></code><hr />
</div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;array&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;vector&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;iostream&gt;</span>
&nbsp;
<span style="color: #0000ff;">enum</span> bien_immobilier<span style="color: black;">&#123;</span>maison,appartement<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #0000ff;">typedef</span> std::tuple&lt;bien_immobilier,<span style="color: #0000ff;">int</span>&gt;ligne_revenus;
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  std::vector&lt;ligne_revenus&gt;revenus;
  std::array&lt;std::vector&lt;ligne_revenus&gt;,<span style="color: #cc66cc;">6</span>&gt;revenus_joueur;
  ligne_revenus un_revenu=std::make_tuple<span style="color: black;">&#40;</span>maison,<span style="color: #cc66cc;">250</span><span style="color: black;">&#41;</span>;
  ligne_revenus un_autre=std::make_tuple<span style="color: black;">&#40;</span>appartement,<span style="color: #cc66cc;">150</span><span style="color: black;">&#41;</span>;
  revenus.push_back<span style="color: black;">&#40;</span>un_revenu<span style="color: black;">&#41;</span>;
  revenus.push_back<span style="color: black;">&#40;</span>un_autre<span style="color: black;">&#41;</span>;
  revenus_joueur<span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#93;</span>=revenus;
  std::cout&lt;&lt;revenus_joueur<span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#93;</span>&lt;&lt;std::endl;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>emmesse</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179579/c-cpp/cpp/ne-maitrise-tres-bien-tuples/</guid>
		</item>
		<item>
			<title>Cannot find bounds of current function</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179534&amp;goto=newpost</link>
			<pubDate>Sun, 28 Sep 2025 17:28:52 GMT</pubDate>
			<description>Bonjour, 
 
tout à la fin de...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
tout à la fin de l'éxécution de mon programme (l'accolade fermante de main()), ça m'indique segmentation fault et le deboggeur gdb me dit Cannot find bounds of current function<br />
serait-ce à cause de ce code?<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;unistd.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;termios.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;iostream&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;limits&gt;</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;cashflow.hpp&quot;</span>
&nbsp;
<span style="color: #0000ff;">char</span> jeu::getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">char</span> buf = <span style="color: #cc66cc;">0</span>;
  <span style="color: #0000ff;">struct</span> termios old = <span style="color: black;">&#123;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#125;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>tcgetattr<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, &amp;old<span style="color: black;">&#41;</span> &lt; <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>
    perror<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;tcsetattr()&quot;</span><span style="color: black;">&#41;</span>;
  old.c_lflag &amp;= ~ICANON;
  old.c_lflag &amp;= ~ECHO;
  old.c_cc<span style="color: black;">&#91;</span>VMIN<span style="color: black;">&#93;</span> = <span style="color: #cc66cc;">1</span>;
  old.c_cc<span style="color: black;">&#91;</span>VTIME<span style="color: black;">&#93;</span> = <span style="color: #cc66cc;">0</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>tcsetattr<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, TCSANOW, &amp;old<span style="color: black;">&#41;</span> &lt; <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>
    perror<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;tcsetattr ICANON&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>read<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, &amp;buf, <span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span> &lt; <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>
    perror <span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;read()&quot;</span><span style="color: black;">&#41;</span>;
  old.c_lflag |= ICANON;
  old.c_lflag |= ECHO;
  <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>tcsetattr<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>, TCSADRAIN, &amp;old<span style="color: black;">&#41;</span> &lt; <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>
    perror <span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;tcsetattr ~ICANON&quot;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">return</span> <span style="color: black;">&#40;</span>buf<span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
sinon, les autres fichiers:<br />
main.cpp<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;cashflow.hpp&quot;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
  jeu partie;
  partie.boucle_de_jeu<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>cashflow.hpp<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#ifndef CASHFLOW_HPP</span>
<span style="color: #339933;">#define CASHFLOW_HPP</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;vector&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;string&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;map&gt;</span>
&nbsp;
<span style="color: #0000ff;">enum</span> bien_immobilier<span style="color: black;">&#123;</span>
  maison_2chambres_1sdb,
  appartement_2chambres_1sdb,
  immeuble,
  maison_3chambres_2sdb,
  appartement_3chambre_2sdb
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #0000ff;">enum</span> symbole_action<span style="color: black;">&#123;</span>
  MYT4U
<span style="color: black;">&#125;</span>;
&nbsp;
<span style="color: #0000ff;">class</span> jeu<span style="color: black;">&#123;</span>
<span style="color: #0000ff;">public</span>:
  jeu<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> boucle_de_jeu<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
<span style="color: #0000ff;">private</span>:
  <span style="color: #0000ff;">char</span> getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> tour<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> avancer<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> participant,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> combien,<span style="color: #0000ff;">bool</span> &amp;paye<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> tour_voie_rapide<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> numparticipant<span style="color: black;">&#41;</span>;<span style="color: #808080;">//&agrave; completer</span>
  <span style="color: #0000ff;">void</span> carte_metier<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> metier<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> affiche_perso<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> init_imprevus<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> empreinter<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;<span style="color: #808080;">//&agrave; completer</span>
  <span style="color: #0000ff;">void</span> calcul_cashflow<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> choix_marche<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;<span style="color: #808080;">//&agrave; completer</span>
  <span style="color: #0000ff;">void</span> choix_opportunite<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> choix_petite_opportunite<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> choix_grosse_opportunite<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> choix_imprevus<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> pas_chomage<span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> cas_multiniveau<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> cas_charite<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> vendre_bien_immo<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,bien_immobilier,<span style="color: #0000ff;">int</span> cout,<span style="color: #0000ff;">int</span> apport,<span style="color: #0000ff;">int</span> hypotheque,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> cashflow<span style="color: black;">&#41;</span>;<span style="color: #808080;">//&agrave; completer</span>
  <span style="color: #0000ff;">void</span> vendre_carte_bien<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,bien_immobilier,<span style="color: #0000ff;">int</span> cout,<span style="color: #0000ff;">int</span> apport,<span style="color: #0000ff;">int</span> hypotheque,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> cashflow<span style="color: black;">&#41;</span>;<span style="color: #808080;">//&agrave; completer</span>
  <span style="color: #0000ff;">bool</span> personne_gagne<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">void</span> vendre_actions<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,symbole_action symbole,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> prix_du_jour<span style="color: black;">&#41;</span>;<span style="color: #808080;">//&agrave; completer</span>
  <span style="color: #0000ff;">void</span> acheter_actions<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,symbole_action symbole,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> prix_du_jour<span style="color: black;">&#41;</span>;<span style="color: #808080;">//&agrave; completer</span>
  std::string participant<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> nbjoueurs;
  std::string nomjoueur<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> numtour;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> case_courante<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> case_derniere<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  std::string profession<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> multiniveau<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">long</span> <span style="color: #0000ff;">int</span> caisse<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> revenu_passif<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> revenus<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> depenses<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> cashflow<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> salaire<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> impots<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> remboursement_hypotheque<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> remboursement_pret_etudiant<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> remboursement_pret_vehicule<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> remboursement_par_carte_de_credit<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> autre_depenses<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> remboursement_pret_bancaire<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> depenses_par_enfant<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> nb_enfants<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> hypotheque<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> pret_etudiant<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> pret_vehicule<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> carte_de_credit<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">int</span> pret_bancaire<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> pieces_or<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> nb_bebe<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">bool</span> voie_rapide<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> au_chomage<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> en_charite<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> petite_opportunite<span style="color: black;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: black;">&#93;</span>;<span style="color: #808080;">//38</span>
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> grosse_opportunite<span style="color: black;">&#91;</span><span style="color: #cc66cc;">36</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> imprevus<span style="color: black;">&#91;</span><span style="color: #cc66cc;">42</span><span style="color: black;">&#93;</span>;
  std::string imprevus_objet<span style="color: black;">&#91;</span><span style="color: #cc66cc;">42</span><span style="color: black;">&#93;</span>=<span style="color: black;">&#123;</span>
    <span style="color: #FF0000;">&quot;Nouveaux v&ecirc;tements de sport&quot;</span>,<span style="color: #FF0000;">&quot;Adh&eacute;sion au club de golf&quot;</span>,<span style="color: #FF0000;">&quot;Rendez-vous galant: d&icirc;ner, concert et dessert&quot;</span>,<span style="color: #FF0000;">&quot;Nouvelles jantes de voiture&quot;</span>,<span style="color: #FF0000;">&quot;Nouvelle boule de booling&quot;</span>,
    <span style="color: #FF0000;">&quot;Remplacement du syst&egrave;me de climatisation de votre voiture&quot;</span>,<span style="color: #FF0000;">&quot;Nouveau fauteuil&quot;</span>,<span style="color: #FF0000;">&quot;Jet ski&quot;</span>,<span style="color: #FF0000;">&quot;Bijoux fantaisie&quot;</span>,<span style="color: #FF0000;">&quot;Nouvel ordinateur&quot;</span>,<span style="color: #FF0000;">&quot;Week-end dans une r&eacute;gion viticole&quot;</span>,
    <span style="color: #FF0000;">&quot;Visite au casino&quot;</span>,<span style="color: #FF0000;">&quot;Console de jeux nouvelle g&eacute;n&eacute;ration&quot;</span>,<span style="color: #FF0000;">&quot;Nouvelle montre&quot;</span>,<span style="color: #FF0000;">&quot;Nouvelle autoradio&quot;</span>,<span style="color: #FF0000;">&quot;Construction d'une salle de sport &agrave; la maison&quot;</span>,
    <span style="color: #FF0000;">&quot;Achat d'une toile d'un peintre local&quot;</span>,<span style="color: #FF0000;">&quot;R&eacute;novation de la cuisine&quot;</span>,<span style="color: #FF0000;">&quot;carte d'abonnement&quot;</span>,<span style="color: #FF0000;">&quot;Nouveaux v&ecirc;tements&quot;</span>,<span style="color: #FF0000;">&quot;Tickets de concert&quot;</span>,<span style="color: #FF0000;">&quot;Bateau de p&ecirc;che&quot;</span>,
    <span style="color: #FF0000;">&quot;Nouvelle paire de lunettes de soleil&quot;</span>,<span style="color: #FF0000;">&quot;TV &eacute;cran g&eacute;ant&quot;</span>,<span style="color: #FF0000;">&quot;Achat du tout dernier t&eacute;l&eacute;p&#293;one&quot;</span>,<span style="color: #FF0000;">&quot;Participer au financement du mariage de votre enfant&quot;</span>,
    <span style="color: #FF0000;">&quot;Premi&egrave;re voiture de votre enfant&quot;</span>,<span style="color: #FF0000;">&quot;Nouveaux clubs de golf&quot;</span>,<span style="color: #FF0000;">&quot;Nouveau costume sur mesure&quot;</span>,<span style="color: #FF0000;">&quot;Robot m&eacute;nager&quot;</span>,<span style="color: #FF0000;">&quot;D&icirc;ner entre amis&quot;</span>,<span style="color: #FF0000;">&quot;Pneus neufs&quot;</span>,
    <span style="color: #FF0000;">&quot;Nouvelle raquette de tenis&quot;</span>,<span style="color: #FF0000;">&quot;Machine &agrave; caf&eacute;&quot;</span>,<span style="color: #FF0000;">&quot;Votre enfant a besoin d'un appareil dentaire&quot;</span>,<span style="color: #FF0000;">&quot;F&ecirc;te d'anniversaire de votre enfant&quot;</span>,
    <span style="color: #FF0000;">&quot;Cours particuliers pour vos enfants&quot;</span>,<span style="color: #FF0000;">&quot;R&eacute;union de parents d'&eacute;l&egrave;ves&quot;</span>,<span style="color: #FF0000;">&quot;Repeindre la maison&quot;</span>,<span style="color: #FF0000;">&quot;Rendez-vous chez le dentiste&quot;</span>,<span style="color: #FF0000;">&quot;Vacances en famille&quot;</span>,
    <span style="color: #FF0000;">&quot;Nouveau syst&egrave;me audio&quot;</span>
  <span style="color: black;">&#125;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> imprevus_prix<span style="color: black;">&#91;</span><span style="color: #cc66cc;">42</span><span style="color: black;">&#93;</span>=<span style="color: black;">&#123;</span>
    <span style="color: #cc66cc;">300</span>,<span style="color: #cc66cc;">2000</span>,<span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">2000</span>,<span style="color: #cc66cc;">100</span>,<span style="color: #cc66cc;">700</span>,<span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">3000</span>,<span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">1800</span>,<span style="color: #cc66cc;">1000</span>,<span style="color: #cc66cc;">800</span>,<span style="color: #cc66cc;">600</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">700</span>,<span style="color: #cc66cc;">3000</span>,<span style="color: #cc66cc;">800</span>,<span style="color: #cc66cc;">7500</span>,<span style="color: #cc66cc;">1500</span>,<span style="color: #cc66cc;">1000</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">5000</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">2500</span>,<span style="color: #cc66cc;">300</span>,<span style="color: #cc66cc;">2000</span>,<span style="color: #cc66cc;">5000</span>,<span style="color: #cc66cc;">800</span>,<span style="color: #cc66cc;">1000</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">600</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">300</span>,<span style="color: #cc66cc;">4000</span>,<span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">600</span>,<span style="color: #cc66cc;">700</span>,<span style="color: #cc66cc;">2500</span>,<span style="color: #cc66cc;">1500</span>
  <span style="color: black;">&#125;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> index_imprevus;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> index_marche;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> index_petite;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> index_grosse;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> marche<span style="color: black;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> metiers<span style="color: black;">&#91;</span><span style="color: #cc66cc;">12</span><span style="color: black;">&#93;</span>;
  <span style="color: #0000ff;">bool</span> gagne<span style="color: black;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: black;">&#93;</span>;  
<span style="color: black;">&#125;</span>;
<span style="color: #339933;">#endif</span></pre></td></tr></table></code><hr />
</div>cashflow.cpp<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br />200<br />201<br />202<br />203<br />204<br />205<br />206<br />207<br />208<br />209<br />210<br />211<br />212<br />213<br />214<br />215<br />216<br />217<br />218<br />219<br />220<br />221<br />222<br />223<br />224<br />225<br />226<br />227<br />228<br />229<br />230<br />231<br />232<br />233<br />234<br />235<br />236<br />237<br />238<br />239<br />240<br />241<br />242<br />243<br />244<br />245<br />246<br />247<br />248<br />249<br />250<br />251<br />252<br />253<br />254<br />255<br />256<br />257<br />258<br />259<br />260<br />261<br />262<br />263<br />264<br />265<br />266<br />267<br />268<br />269<br />270<br />271<br />272<br />273<br />274<br />275<br />276<br />277<br />278<br />279<br />280<br />281<br />282<br />283<br />284<br />285<br />286<br />287<br />288<br />289<br />290<br />291<br />292<br />293<br />294<br />295<br />296<br />297<br />298<br />299<br />300<br />301<br />302<br />303<br />304<br />305<br />306<br />307<br />308<br />309<br />310<br />311<br />312<br />313<br />314<br />315<br />316<br />317<br />318<br />319<br />320<br />321<br />322<br />323<br />324<br />325<br />326<br />327<br />328<br />329<br />330<br />331<br />332<br />333<br />334<br />335<br />336<br />337<br />338<br />339<br />340<br />341<br />342<br />343<br />344<br />345<br />346<br />347<br />348<br />349<br />350<br />351<br />352<br />353<br />354<br />355<br />356<br />357<br />358<br />359<br />360<br />361<br />362<br />363<br />364<br />365<br />366<br />367<br />368<br />369<br />370<br />371<br />372<br />373<br />374<br />375<br />376<br />377<br />378<br />379<br />380<br />381<br />382<br />383<br />384<br />385<br />386<br />387<br />388<br />389<br />390<br />391<br />392<br />393<br />394<br />395<br />396<br />397<br />398<br />399<br />400<br />401<br />402<br />403<br />404<br />405<br />406<br />407<br />408<br />409<br />410<br />411<br />412<br />413<br />414<br />415<br />416<br />417<br />418<br />419<br />420<br />421<br />422<br />423<br />424<br />425<br />426<br />427<br />428<br />429<br />430<br />431<br />432<br />433<br />434<br />435<br />436<br />437<br />438<br />439<br />440<br />441<br />442<br />443<br />444<br />445<br />446<br />447<br />448<br />449<br />450<br />451<br />452<br />453<br />454<br />455<br />456<br />457<br />458<br />459<br />460<br />461<br />462<br />463<br />464<br />465<br />466<br />467<br />468<br />469<br />470<br />471<br />472<br />473<br />474<br />475<br />476<br />477<br />478<br />479<br />480<br />481<br />482<br />483<br />484<br />485<br />486<br />487<br />488<br />489<br />490<br />491<br />492<br />493<br />494<br />495<br />496<br />497<br />498<br />499<br />500<br />501<br />502<br />503<br />504<br />505<br />506<br />507<br />508<br />509<br />510<br />511<br />512<br />513<br />514<br />515<br />516<br />517<br />518<br />519<br />520<br />521<br />522<br />523<br />524<br />525<br />526<br />527<br />528<br />529<br />530<br />531<br />532<br />533<br />534<br />535<br />536<br />537<br />538<br />539<br />540<br />541<br />542<br />543<br />544<br />545<br />546<br />547<br />548<br />549<br />550<br />551<br />552<br />553<br />554<br />555<br />556<br />557<br />558<br />559<br />560<br />561<br />562<br />563<br />564<br />565<br />566<br />567<br />568<br />569<br />570<br />571<br />572<br />573<br />574<br />575<br />576<br />577<br />578<br />579<br />580<br />581<br />582<br />583<br />584<br />585<br />586<br />587<br />588<br />589<br />590<br />591<br />592<br />593<br />594<br />595<br />596<br />597<br />598<br />599<br />600<br />601<br />602<br />603<br />604<br />605<br />606<br />607<br />608<br />609<br />610<br />611<br />612<br />613<br />614<br />615<br />616<br />617<br />618<br />619<br />620<br />621<br />622<br />623<br />624<br />625<br />626<br />627<br />628<br />629<br />630<br />631<br />632<br />633<br />634<br />635<br />636<br />637<br />638<br />639<br />640<br />641<br />642<br />643<br />644<br />645<br />646<br />647<br />648<br />649<br />650<br />651<br />652<br />653<br />654<br />655<br />656<br />657<br />658<br />659<br />660<br />661<br />662<br />663<br />664<br />665<br />666<br />667<br />668<br />669<br />670<br />671<br />672<br />673<br />674<br />675<br />676<br />677<br />678<br />679<br />680<br />681<br />682<br />683<br />684<br />685<br />686<br />687<br />688<br />689<br />690<br />691<br />692<br />693<br />694<br />695<br />696<br />697<br />698<br />699<br />700<br />701<br />702<br />703<br />704<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;random&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;string&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;iostream&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;vector&gt;</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &quot;cashflow.hpp&quot;</span>
&nbsp;
std::string type_case<span style="color: black;">&#91;</span><span style="color: #cc66cc;">24</span><span style="color: black;">&#93;</span>=<span style="color: black;">&#123;</span>
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;Impr&eacute;vus&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;Charit&eacute;&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;Jour de paye&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;March&eacute;&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;Impr&eacute;vus&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;R&eacute;duction de personnel&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;Jour de paye&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;March&eacute;&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;Impr&eacute;vus&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;B&eacute;b&eacute;&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;Jour de paye&quot;</span>,
  <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span>,
  <span style="color: #FF0000;">&quot;March&eacute;&quot;</span>  
<span style="color: black;">&#125;</span>;
&nbsp;
jeu::jeu<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:numtour<span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>,index_imprevus<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>,index_marche<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>,index_petite<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>,index_grosse<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  std::random_device rd;
  std::default_random_engine eng<span style="color: black;">&#40;</span>rd<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
  std::uniform_int_distribution&lt;<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span>&gt; carte_imprevus<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">41</span><span style="color: black;">&#41;</span>;
  std::uniform_int_distribution&lt;<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span>&gt; carte_marche<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">39</span><span style="color: black;">&#41;</span>;
  std::uniform_int_distribution&lt;<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span>&gt; alea_metier<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">11</span><span style="color: black;">&#41;</span>;
  std::uniform_int_distribution&lt;<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span>&gt; carte_petite_opportunit&eacute;<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">37</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i=<span style="color: #cc66cc;">0</span>;i&lt;<span style="color: #cc66cc;">42</span>;i++<span style="color: black;">&#41;</span>
    imprevus<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>=i;
  <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i=<span style="color: #cc66cc;">0</span>;i&lt;<span style="color: #cc66cc;">41</span>;i++<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> choix;
    <span style="color: #0000ff;">do</span>
      choix=carte_imprevus<span style="color: black;">&#40;</span>eng<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span>choix&lt;=i<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> temp=imprevus<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>;
    imprevus<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>=imprevus<span style="color: black;">&#91;</span>choix<span style="color: black;">&#93;</span>;
    imprevus<span style="color: black;">&#91;</span>choix<span style="color: black;">&#93;</span>=temp;
  <span style="color: black;">&#125;</span>
  <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i=<span style="color: #cc66cc;">0</span>;i&lt;<span style="color: #cc66cc;">5</span>;i++<span style="color: black;">&#41;</span>
    marche<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>=i;
  <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i=<span style="color: #cc66cc;">0</span>;i&lt;<span style="color: #cc66cc;">39</span>;i++<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> choix;
    <span style="color: #0000ff;">do</span>
      choix=carte_marche<span style="color: black;">&#40;</span>eng<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span>choix&lt;=i<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">short</span> temp=marche<span style="color: black;">&#91;</span>choix<span style="color: black;">&#93;</span>;
    marche<span style="color: black;">&#91;</span>choix<span style="color: black;">&#93;</span>=marche<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>;
    marche<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>=temp;
  <span style="color: black;">&#125;</span>
  <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i=<span style="color: #cc66cc;">0</span>;i&lt;<span style="color: #cc66cc;">12</span>;i++<span style="color: black;">&#41;</span>
    metiers<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>=i;
  <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> i=<span style="color: #cc66cc;">0</span>;i&lt;<span style="color: #cc66cc;">11</span>;i++<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> choix;
    <span style="color: #0000ff;">do</span>
      choix=alea_metier<span style="color: black;">&#40;</span>eng<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span>choix&lt;=i<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> temp=metiers<span style="color: black;">&#91;</span>choix<span style="color: black;">&#93;</span>;
    metiers<span style="color: black;">&#91;</span>choix<span style="color: black;">&#93;</span>=metiers<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>;
    metiers<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>=temp;
  <span style="color: black;">&#125;</span>
  <span style="color: #808080;">/*  for(int i=0;i&lt;3;i++)//38</span>
<span style="color: #808080;">&nbsp;   petite_opportunite[i]=i;</span>
<span style="color: #808080;">&nbsp; for(int i=0;i&lt;2;i++){//37</span>
<span style="color: #808080;">&nbsp;   short int choix;</span>
<span style="color: #808080;">&nbsp;   do</span>
<span style="color: #808080;">&nbsp;     choix=carte_petite_opportunite(eng);</span>
<span style="color: #808080;">&nbsp;   while(choix&lt;=i);</span>
<span style="color: #808080;">&nbsp;   short int temp=petite_opporunite[i];</span>
<span style="color: #808080;">&nbsp;   petite_opporunite[i]=petite_opporunite[choix];</span>
<span style="color: #808080;">&nbsp;   petite_opporunite[choix]=temp;</span>
<span style="color: #808080;">&nbsp;   }*/</span>
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;combien de joueur ? &quot;</span>;
  <span style="color: #0000ff;">do</span><span style="color: black;">&#123;</span>
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;(max 6) :&quot;</span>;
    std::cin&gt;&gt;nbjoueurs;
  <span style="color: black;">&#125;</span><span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span>nbjoueurs&lt;<span style="color: #cc66cc;">1</span> || nbjoueurs&gt;<span style="color: #cc66cc;">6</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> nbmetiers=<span style="color: #cc66cc;">12</span>;
  <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> joueur=<span style="color: #cc66cc;">0</span>;joueur&lt;nbjoueurs;joueur++<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    en_charite<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    au_chomage<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    multiniveau<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    gagne<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #0080ff;">false</span>;
    voie_rapide<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #0080ff;">false</span>;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>Nom du joueur n&deg; &quot;</span>&lt;&lt;joueur+<span style="color: #cc66cc;">1</span>&lt;&lt;<span style="color: #FF0000;">&quot; : &quot;</span>;
    std::cin&gt;&gt;nomjoueur<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>;
    <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> choix;
    <span style="color: #0000ff;">do</span><span style="color: black;">&#123;</span>
      std::cout&lt;&lt;<span style="color: #FF0000;">&quot;choisissez une carte m&eacute;tier entre 1 et &quot;</span>&lt;&lt;nbmetiers&lt;&lt;<span style="color: #FF0000;">&quot; : &quot;</span>;
      std::cin&gt;&gt;choix;
    <span style="color: black;">&#125;</span><span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span>choix&lt;<span style="color: #cc66cc;">1</span> || choix&gt;nbmetiers<span style="color: black;">&#41;</span>;
    carte_metier<span style="color: black;">&#40;</span>joueur,choix-<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> i=choix-<span style="color: #cc66cc;">1</span>;i&lt;nbmetiers;i++<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
      metiers<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>=metiers<span style="color: black;">&#91;</span>i+<span style="color: #cc66cc;">1</span><span style="color: black;">&#93;</span>;
    <span style="color: black;">&#125;</span>
    nbmetiers--;
  <span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::affiche_perso<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>Votre profession est &quot;</span>&lt;&lt;profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre salaire est &quot;</span>&lt;&lt;salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos imp&ocirc;ts sont de &quot;</span>&lt;&lt;impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos mensualit&eacute;s d'hypoth&egrave;que sont de &quot;</span>&lt;&lt;remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos remboursements mensuels du pr&ecirc;t &eacute;tudiant sont de &quot;</span>&lt;&lt;remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos remboursements mensuels du pr&ecirc;t v&eacute;hicule sont de &quot;</span>&lt;&lt;remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos remboursements par carte de cr&eacute;dit sont de &quot;</span>&lt;&lt;remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos autres d&eacute;penses sont de &quot;</span>&lt;&lt;autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos remboursements de pr&ecirc;ts bancaires sont de &quot;</span>&lt;&lt;remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos d&eacute;penses par enfant sont de &quot;</span>&lt;&lt;depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vous avez &quot;</span>&lt;&lt;nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; enfants.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos revenus pasifs sont de &quot;</span>&lt;&lt;revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos revenus sont de &quot;</span>&lt;&lt;revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos d&eacute;penses sont de &quot;</span>&lt;&lt;depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>Votre cashflow est de &quot;</span>&lt;&lt;cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vous avez &quot;</span>&lt;&lt;caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128; en caisse.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre hypoth&egrave;que est de &quot;</span>&lt;&lt;hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre pr&ecirc;t &eacute;tudian est de &quot;</span>&lt;&lt;pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre pr&ecirc;t v&eacute;hicule est de &quot;</span>&lt;&lt;pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos cr&eacute;dits de carte de cr&eacute;dit sont de &quot;</span>&lt;&lt;carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vos pr&ecirc;ts bancaires s'&eacute;l&egrave;vent &agrave; &quot;</span>&lt;&lt;pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
<span style="color: black;">&#125;</span>  
&nbsp;
<span style="color: #0000ff;">void</span> jeu::carte_metier<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> metier<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">switch</span><span style="color: black;">&#40;</span>metiers<span style="color: black;">&#91;</span>metier<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">0</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;infirmi&egrave;re&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3100</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">600</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">600</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3100</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2000</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1100</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">500</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">47000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">6000</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">5000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">1</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;m&eacute;canicien&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2000</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">300</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2000</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1300</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">31000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">2</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;avocat&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">7500</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1800</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1100</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">300</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1500</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">7500</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">5100</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2400</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2000</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">115000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">7800</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">11000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">7000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">3</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;concierge&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1600</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">300</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">300</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1600</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1000</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">600</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">600</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">20000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">4</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;m&eacute;decin&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">13200</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3200</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1900</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">300</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2000</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">13200</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">8300</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4900</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3500</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">202000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">150000</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">19000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">10000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">5</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;g&eacute;rante d'entreprise&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4600</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">900</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1000</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">300</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4600</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3000</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1600</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">75000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">12000</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">6000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">6</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;pilote de ligne&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">9500</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2000</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1000</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">300</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2000</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">9500</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">6000</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3500</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2500</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">90000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">15000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">22000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">7</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;chauffeur routier&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2500</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">500</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">600</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2500</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1700</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1100</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">800</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">38000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">8</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;officier de police&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3000</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">600</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3000</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1900</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1100</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">500</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">46000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">5000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">9</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;secretaire&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3100</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">500</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">600</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2500</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1700</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">800</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">38000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">10</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;ing&eacute;nieur&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4900</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1000</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1000</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4900</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3200</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1700</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">75000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">12000</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">7000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">5000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">11</span>:
    profession<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #FF0000;">&quot;enseignante&quot;</span>;
    salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3300</span>;
    impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">500</span>;
    remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">500</span>;
    remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">100</span>;
    remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">700</span>;
    remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">200</span>;
    nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3300</span>;
    depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">2100</span>;
    cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1200</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">400</span>;
    hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">50000</span>;
    pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">12000</span>;
    pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">5000</span>;
    carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">4000</span>;
    pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
    affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;    
  <span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::boucle_de_jeu<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">char</span> encore;
  <span style="color: #0000ff;">do</span><span style="color: black;">&#123;</span>
    tour<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;appuyez sur 'o' pour le tour suivant, ou 'n' pour quitter&quot;</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span> <span style="color: black;">&#40;</span>encore=getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>!=<span style="color: #FF0000;">'o'</span> &amp;&amp; encore!=<span style="color: #FF0000;">'O'</span> &amp;&amp; encore!=<span style="color: #FF0000;">'n'</span> &amp;&amp; encore!=<span style="color: #FF0000;">'N'</span><span style="color: black;">&#41;</span>
    <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>encore==<span style="color: #FF0000;">'o'</span> || encore==<span style="color: #FF0000;">'O'</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
      std::cout&lt;&lt;<span style="color: #FF0000;">&quot;&ecirc;tes-vous sur de vouloir arr&ecirc;ter le jeu? (appuyez sur 'o' sortir du jeu, ou 'n' pour continuer le jeu).&quot;</span>&lt;&lt;std::endl;
      <span style="color: #0000ff;">char</span> confirme;
      <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>confirme=getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>!=<span style="color: #FF0000;">'o'</span> &amp;&amp; confirme!=<span style="color: #FF0000;">'O'</span> &amp;&amp; confirme!=<span style="color: #FF0000;">'n'</span> &amp;&amp; confirme!=<span style="color: #FF0000;">'N'</span><span style="color: black;">&#41;</span>
	;
      <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>confirme==<span style="color: #FF0000;">'n'</span> || confirme==<span style="color: #FF0000;">'N'</span><span style="color: black;">&#41;</span>
	encore=<span style="color: #FF0000;">'o'</span>;
    <span style="color: black;">&#125;</span>
  <span style="color: black;">&#125;</span><span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span>personne_gagne<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> &amp;&amp; <span style="color: black;">&#40;</span>encore==<span style="color: #FF0000;">'o'</span> || encore==<span style="color: #FF0000;">'O'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #0000ff;">bool</span> jeu::personne_gagne<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">bool</span> retour=<span style="color: #0080ff;">true</span>;
  <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> joueur=<span style="color: #cc66cc;">0</span>;joueur&lt;nbjoueurs;joueur++<span style="color: black;">&#41;</span>
    <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>gagne<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
      retour=<span style="color: #0080ff;">false</span>;
  <span style="color: #0000ff;">return</span> retour;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::avancer<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> combien_case,<span style="color: #0000ff;">bool</span> &amp;paye<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  paye=<span style="color: #0080ff;">false</span>;
  case_derniere<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>;
  case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+=combien_case;
  case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>%=<span style="color: #cc66cc;">24</span>;
  paye= <span style="color: black;">&#40;</span> case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;<span style="color: #cc66cc;">3</span> &amp;&amp; case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;<span style="color: #cc66cc;">11</span> &amp;&amp; <span style="color: black;">&#40;</span>case_derniere<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;<span style="color: #cc66cc;">19</span> &amp;&amp; case_derniere<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;=<span style="color: #cc66cc;">23</span> || case_derniere<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;=<span style="color: #cc66cc;">0</span> &amp;&amp;case_derniere<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;<span style="color: #cc66cc;">3</span> <span style="color: black;">&#41;</span> <span style="color: black;">&#41;</span>
    ||<span style="color: black;">&#40;</span>case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;<span style="color: #cc66cc;">11</span> &amp;&amp; case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;<span style="color: #cc66cc;">19</span> &amp;&amp; case_derniere<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;<span style="color: #cc66cc;">3</span> &amp;&amp; case_derniere<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;<span style="color: #cc66cc;">11</span><span style="color: black;">&#41;</span>
    ||<span style="color: black;">&#40;</span> <span style="color: black;">&#40;</span> case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;<span style="color: #cc66cc;">19</span> &amp;&amp; case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;=<span style="color: #cc66cc;">23</span> || case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;=<span style="color: #cc66cc;">0</span> &amp;&amp; case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span> &amp;&amp; case_derniere<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;<span style="color: #cc66cc;">11</span> &amp;&amp; case_derniere<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;<span style="color: #cc66cc;">19</span><span style="color: black;">&#41;</span>
    ||case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>==<span style="color: #cc66cc;">3</span>
    ||case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>==<span style="color: #cc66cc;">11</span>
    ||case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>==<span style="color: #cc66cc;">19</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::empreinter<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">long</span> <span style="color: #0000ff;">int</span> pret;
  <span style="color: #0000ff;">do</span><span style="color: black;">&#123;</span>
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Montant du pr&ecirc;t (doit &ecirc;tre un multiple de 1000): &quot;</span>;
    std::cin&gt;&gt;pret;
  <span style="color: black;">&#125;</span><span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span>pret % <span style="color: #cc66cc;">1000</span> != <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">int</span> interets=pret/<span style="color: #cc66cc;">10</span>;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;les int&eacute;r&ecirc;ts pour ce pr&ecirc;t sont de &quot;</span>&lt;&lt;interets&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+=pret;
  caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+=pret;
  remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+=interets;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;les int&eacute;r&ecirc;ts de tous vos cr&eacute;dits sont de &quot;</span>&lt;&lt;remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  calcul_cashflow<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::calcul_cashflow<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=impots<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+remboursement_hypotheque<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+remboursement_pret_etudiant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+remboursement_pret_vehicule<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>
    +remboursement_par_carte_de_credit<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+autre_depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+remboursement_pret_bancaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+depenses_par_enfant<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>*nb_enfants<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>;
  <span style="color: #808080;">/*calcul revenu passif*/</span>
  revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=salaire<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+revenu_passif<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>;
  cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=revenus<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>-depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::tour<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  std::random_device rd;
  std::default_random_engine eng<span style="color: black;">&#40;</span>rd<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
  std::uniform_int_distribution&lt;<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span>&gt; de6<span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">6</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span><span style="color: #0000ff;">int</span> joueur=<span style="color: #cc66cc;">0</span>;joueur&lt;nbjoueurs;joueur++<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>Tour n&deg; &quot;</span>&lt;&lt;numtour&lt;&lt;<span style="color: #FF0000;">&quot; de &quot;</span>&lt;&lt;nomjoueur<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>voie_rapide<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
      tour_voie_rapide<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">else</span><span style="color: black;">&#123;</span>
      std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Voulez-vous voir vos d&eacute;tails avant de jouer votre tour?&quot;</span>&lt;&lt;std::endl;
      <span style="color: #0000ff;">char</span> rep;
      <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span> <span style="color: black;">&#40;</span>rep=getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>!=<span style="color: #FF0000;">'o'</span> &amp;&amp; rep!=<span style="color: #FF0000;">'O'</span> &amp;&amp; rep!=<span style="color: #FF0000;">'n'</span> &amp;&amp; rep!=<span style="color: #FF0000;">'N'</span><span style="color: black;">&#41;</span>
	;
      <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>rep==<span style="color: #FF0000;">'o'</span>||rep==<span style="color: #FF0000;">'O'</span><span style="color: black;">&#41;</span>
	affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
      <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>au_chomage<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;<span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
	std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vous &ecirc;tes au chomage, vous sautez un tour.&quot;</span>&lt;&lt;std::endl;
	caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>-=depenses<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>;
	std::cout&lt;&lt;<span style="color: #FF0000;">&quot;votre caisse est de &quot;</span>&lt;&lt;caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
	au_chomage<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>--;
      <span style="color: black;">&#125;</span>
      <span style="color: #0000ff;">else</span><span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">bool</span> paye1;
	<span style="color: #0000ff;">bool</span> paye2;
	<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> de1=de6<span style="color: black;">&#40;</span>eng<span style="color: black;">&#41;</span>;
	avancer<span style="color: black;">&#40;</span>joueur,de1,paye1<span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> de2=<span style="color: #cc66cc;">0</span>;
	<span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>en_charite<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&gt;<span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
	  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;voulez-vous utiliser votre deuxi&egrave;me d&eacute; ? &quot;</span>;
	  <span style="color: #0000ff;">char</span> reponse;
	  <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span> <span style="color: black;">&#40;</span>reponse=getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>!=<span style="color: #FF0000;">'o'</span> &amp;&amp; reponse!=<span style="color: #FF0000;">'O'</span> &amp;&amp; reponse!=<span style="color: #FF0000;">'n'</span> &amp;&amp; reponse!=<span style="color: #FF0000;">'N'</span><span style="color: black;">&#41;</span>
	    ;
	  <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>reponse==<span style="color: #FF0000;">'o'</span>||reponse==<span style="color: #FF0000;">'O'</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
	    de2=de6<span style="color: black;">&#40;</span>eng<span style="color: black;">&#41;</span>;
	    avancer<span style="color: black;">&#40;</span>joueur,de2,paye2<span style="color: black;">&#41;</span>;
	    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;case n&deg; &quot;</span>&lt;&lt;case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;std::endl;
	  <span style="color: black;">&#125;</span>
	  en_charite<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>--;
	<span style="color: black;">&#125;</span>
	<span style="color: #0000ff;">else</span>
	  paye2=<span style="color: #0080ff;">false</span>;
	std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>premier d&eacute; : &quot;</span>&lt;&lt;de1&lt;&lt;<span style="color: #FF0000;">&quot;, deuxi&egrave;me d&eacute; : &quot;</span>&lt;&lt;de2&lt;&lt;<span style="color: #FF0000;">&quot; : &quot;</span>&lt;&lt; type_case<span style="color: black;">&#91;</span>case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>;
	<span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>paye1||paye2<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
	  std::cout&lt;&lt;<span style="color: #FF0000;">&quot; : Vous &ecirc;tes pass&eacute; par la case jour de cashflow&quot;</span>;
	<span style="color: black;">&#125;</span>
	caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+=cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>;
	<span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>paye1 &amp;&amp; paye2<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
	  std::cout&lt;&lt;<span style="color: #FF0000;">&quot; deux fois.&quot;</span>;
	  caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>+=cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>;
	<span style="color: black;">&#125;</span>
	<span style="color: #0000ff;">else</span>
	  std::cout&lt;&lt;<span style="color: #FF0000;">'.'</span>;
	<span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>paye1||paye2<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
	  std::cout&lt;&lt;std::endl;
	  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre cashflow est de &quot;</span>&lt;&lt;cashflow<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
	  cas_multiniveau<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
	<span style="color: black;">&#125;</span>
	std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>Votre caisse s'&eacute;l&egrave;ve &agrave; &quot;</span>&lt;&lt;caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;std::endl;
	<span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>type_case<span style="color: black;">&#91;</span>case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>==<span style="color: #FF0000;">&quot;Charit&eacute;&quot;</span><span style="color: black;">&#41;</span>
	  cas_charite<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>type_case<span style="color: black;">&#91;</span>case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>==<span style="color: #FF0000;">&quot;B&eacute;b&eacute;&quot;</span> &amp;&amp; nb_bebe<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>
	  nb_bebe<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>++;
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>type_case<span style="color: black;">&#91;</span>case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>==<span style="color: #FF0000;">&quot;R&eacute;duction de personnel&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
	  au_chomage<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">1</span>;
	  en_charite<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">0</span>;
	<span style="color: black;">&#125;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>type_case<span style="color: black;">&#91;</span>case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>==<span style="color: #FF0000;">&quot;Impr&eacute;vus&quot;</span><span style="color: black;">&#41;</span>
	  choix_imprevus<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>type_case<span style="color: black;">&#91;</span>case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>==<span style="color: #FF0000;">&quot;March&eacute;&quot;</span><span style="color: black;">&#41;</span>
	  choix_marche<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>type_case<span style="color: black;">&#91;</span>case_courante<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>== <span style="color: #FF0000;">&quot;Opportunit&eacute;s&quot;</span><span style="color: black;">&#41;</span>
	  choix_opportunite<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
      <span style="color: black;">&#125;</span>
    <span style="color: black;">&#125;</span>
  <span style="color: black;">&#125;</span>
  numtour++;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::choix_imprevus<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>Vous &ecirc;tes sur une case impr&eacute;vus.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;imprevus_objet<span style="color: black;">&#91;</span>imprevus<span style="color: black;">&#91;</span>index_imprevus<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; : &quot;</span>&lt;&lt;imprevus_prix<span style="color: black;">&#91;</span>imprevus<span style="color: black;">&#91;</span>index_imprevus<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;&quot;</span>&lt;&lt;std::endl;
  <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>nb_bebe<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>!=<span style="color: #cc66cc;">0</span>
     || <span style="color: black;">&#40;</span> index_imprevus!=<span style="color: #cc66cc;">26</span> &amp;&amp; index_imprevus!=<span style="color: #cc66cc;">27</span> &amp;&amp; index_imprevus!=<span style="color: #cc66cc;">35</span> &amp;&amp; index_imprevus!=<span style="color: #cc66cc;">36</span> &amp;&amp; index_imprevus!=<span style="color: #cc66cc;">37</span> &amp;&amp; index_imprevus!=<span style="color: #cc66cc;">38</span>
	  &amp;&amp; index_imprevus!=<span style="color: #cc66cc;">27</span><span style="color: black;">&#41;</span> <span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span> imprevus_prix<span style="color: black;">&#91;</span>imprevus<span style="color: black;">&#91;</span>index_imprevus<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span> &gt; caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span> <span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
      std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vous n'avez pas assez de liquidit&eacute;s, vous devez empreinter&quot;</span>&lt;&lt;std::endl;
      empreinter<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
      std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre caisse est de &quot;</span>&lt;&lt;caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
    <span style="color: black;">&#125;</span>
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>-=imprevus_prix<span style="color: black;">&#91;</span>imprevus<span style="color: black;">&#91;</span>index_imprevus<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span>;
    index_imprevus++;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre caisse apr&egrave;s l'impr&eacute;vus est de &quot;</span>&lt;&lt;caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  <span style="color: black;">&#125;</span>
  <span style="color: #0000ff;">else</span>
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Mais vous n'avez pas d'enfants&quot;</span>&lt;&lt;std::endl;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::cas_multiniveau<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  std::random_device rd;
  std::default_random_engine eng<span style="color: black;">&#40;</span>rd<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
  std::uniform_int_distribution&lt;<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span>&gt; de6<span style="color: black;">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">6</span><span style="color: black;">&#41;</span>;
  <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>multiniveau<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>==<span style="color: #cc66cc;">1</span> || multiniveau<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>==<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre carte de march&eacute; multiniveau vous permet de lancer un d&eacute;.&quot;</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> de=de6<span style="color: black;">&#40;</span>eng<span style="color: black;">&#41;</span>;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Le lanc&eacute; du d&eacute; donne &quot;</span>&lt;&lt;de&lt;&lt;<span style="color: #FF0000;">'.'</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>de&gt;=<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
      std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Le lanc&eacute; du d&eacute; est de 4, 5 ou 6,votre carte de syst&egrave;me de vente multiniveau vous rapporte donc 500&#128;.&quot;</span>&lt;&lt;std::endl;
    <span style="color: black;">&#125;</span>
  <span style="color: black;">&#125;</span>
  <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>multiniveau<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>==<span style="color: #cc66cc;">2</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre deuxi&egrave;me carte de march&eacute; multiniveau vous permet de lancer un deuxi&egrave;me d&eacute;.&quot;</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> de=de6<span style="color: black;">&#40;</span>eng<span style="color: black;">&#41;</span>;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Le lanc&eacute; du d&eacute; donne &quot;</span>&lt;&lt;de&lt;&lt;<span style="color: #FF0000;">'.'</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>de&gt;=<span style="color: #cc66cc;">4</span><span style="color: black;">&#41;</span>
      std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Le lanc&eacute; du d&eacute; a donn&eacute; 4, 5 ou 6. Votre deuxi&egrave;me carte de syst&egrave;me de vente multiniveau vous rapporte donc 500&#128; suppl&eacute;mentaire.&quot;</span>&lt;&lt;std::endl;
  <span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::cas_charite<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vous &ecirc;tes sur une case charit&eacute;, voulez-vous faire la charit&eacute; (10% de votre revenu total) pour utiliser deux d&eacute; les trois prochains tours?(o/n)&quot;</span>;
  std::string reponse;
  std::cin&gt;&gt;reponse;
  <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>reponse.at<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>==<span style="color: #FF0000;">'o'</span> || reponse.at<span style="color: black;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span>==<span style="color: #FF0000;">'O'</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">int</span> charite=<span style="color: black;">&#40;</span><span style="color: #0000ff;">long</span> <span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span>caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>/<span style="color: #cc66cc;">10</span>;
    caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: black;">&#40;</span><span style="color: #0000ff;">long</span> <span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span>caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>-caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>/<span style="color: #cc66cc;">10</span><span style="color: black;">&#41;</span>;
    en_charite<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>=<span style="color: #cc66cc;">3</span>;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Cette charit&eacute; vous a co&ucirc;t&eacute; &quot;</span>&lt;&lt;charite&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre caisse est de &quot;</span>&lt;&lt;caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  <span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::choix_marche<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span>  <span style="color: black;">&#123;</span> <span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::choix_opportunite<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">char</span> reponse;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;appuyez sur 'p' pour une petite opportunint&eacute;, et sur 'g' pour une grosse&quot;</span>&lt;&lt;std::endl;
  <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span> <span style="color: black;">&#40;</span>reponse=getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>!=<span style="color: #FF0000;">'p'</span> &amp;&amp; reponse!=<span style="color: #FF0000;">'P'</span> &amp;&amp; reponse!=<span style="color: #FF0000;">'g'</span> &amp;&amp; reponse!=<span style="color: #FF0000;">'G'</span> <span style="color: black;">&#41;</span>
    ;
  <span style="color: #0000ff;">switch</span><span style="color: black;">&#40;</span>reponse<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'p'</span>:<span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'P'</span>:
    choix_petite_opportunite<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'g'</span>:<span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'G'</span>:
    choix_grosse_opportunite<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: black;">&#125;</span>
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::choix_petite_opportunite<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vous avez choisi une petite opportunit&eacute;.&quot;</span>&lt;&lt;std::endl;
  std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Votre livre de caisse est de &quot;</span>&lt;&lt;caisse<span style="color: black;">&#91;</span>joueur<span style="color: black;">&#93;</span>&lt;&lt;<span style="color: #FF0000;">&quot; &#128;.&quot;</span>&lt;&lt;std::endl;
  <span style="color: #0000ff;">switch</span><span style="color: black;">&#40;</span>index_petite<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">0</span>:
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vous avez trouv&eacute; une super affaire ! <span style="color: #800000;">\n</span><span style="color: #800000;">\n</span>Maison ancienne de deux chambres et une salle de bain, saisie par un organisme gouvernemental. Elle est pr&ecirc;te &agrave; &ecirc;tre vendue avec financement du gouvernement et un locataire. &quot;</span>;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Faites un pr&ecirc;t s'il le faut, mais ACHETEZ-LA !&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>Utilisez cette carte ou vendez-la &agrave; un autre joueur.<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Co&ucirc;t : 35 000 &#128;       Hypoyh&egrave;que : 33 000 &#128;&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Apport : 2000 &#128;          Cash Flow : +220 &#128;<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Voulez-vous acheter ce bien en payant un apport de 2000 ?(appuyez sur 'a'),vendre cette carte (appuyez sur 'v'), ou passer votre tour (appuyez sur 'p') ?&quot;</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">char</span> reponse;
    <span style="color: #0000ff;">do</span> reponse=getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> ; <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span>reponse !=<span style="color: #FF0000;">'a'</span> &amp;&amp; reponse !=<span style="color: #FF0000;">'A'</span> &amp;&amp; reponse !=<span style="color: #FF0000;">'v'</span> &amp;&amp; reponse !=<span style="color: #FF0000;">'V'</span> &amp;&amp; reponse !=<span style="color: #FF0000;">'p'</span> &amp;&amp; reponse!=<span style="color: #FF0000;">'P'</span><span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">switch</span><span style="color: black;">&#40;</span>reponse<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'a'</span>:<span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'A'</span>:
      vendre_bien_immo<span style="color: black;">&#40;</span>joueur,maison_2chambres_1sdb,<span style="color: #cc66cc;">35000</span>,<span style="color: #cc66cc;">2000</span>,<span style="color: #cc66cc;">33000</span>,<span style="color: #cc66cc;">220</span><span style="color: black;">&#41;</span>;
      <span style="color: #0000ff;">break</span>;
    <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'v'</span>:<span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'V'</span>:
      vendre_carte_bien<span style="color: black;">&#40;</span>joueur,maison_2chambres_1sdb,<span style="color: #cc66cc;">35000</span>,<span style="color: #cc66cc;">2000</span>,<span style="color: #cc66cc;">33000</span>,<span style="color: #cc66cc;">220</span><span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">case</span> <span style="color: #FF0000;">'p'</span>:<span style="color: #0000ff;">case</span><span style="color: #FF0000;">'P'</span>:
      ;<span style="color: #808080;">//passer le tour</span>
    <span style="color: black;">&#125;</span>
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Voulez-vous voir vos d&eacute;tails? (o/n)&quot;</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">char</span> rep;
    <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span> <span style="color: black;">&#40;</span>rep=getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>!=<span style="color: #FF0000;">'o'</span> &amp;&amp; rep!=<span style="color: #FF0000;">'O'</span> &amp;&amp; rep!=<span style="color: #FF0000;">'n'</span> &amp;&amp; rep!=<span style="color: #FF0000;">'N'</span><span style="color: black;">&#41;</span>
      ;
    <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>rep==<span style="color: #FF0000;">'o'</span> || rep==<span style="color: #FF0000;">'O'</span><span style="color: black;">&#41;</span>
      affiche_perso<span style="color: black;">&#40;</span>joueur<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">1</span>:
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Appartement de deux chambre et une salle de bain &agrave; vendre<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Des parents vendent un appartement de deux chambres et une salle de bain que leur fils a habit&eacute; pendant ses ann&eacute;es &agrave; l'universit&eacute;. Il y a beaucoup de demandes de location dans cette zone.&quot;</span>
	     &lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>Utilisez cette carte ou vendez-la &agrave; un autre joueur.<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Co&ucirc;t : 40 000 &#128;       Hypoyh&egrave;que : 36 000 &#128;&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Apport : 4000 &#128;          Cash Flow : +140 &#128;<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">break</span>;
  <span style="color: #0000ff;">case</span> <span style="color: #cc66cc;">2</span>:
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Action - MYT4U Electroninics Co.<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Les taux d'int&eacute;r&ecirc;ts record g&eacute;n&egrave;re un prix inf&eacute;rieur &agrave; la norme pour les actions de ce vendeur de produits &eacute;lectroniques.<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Vous seul pouvez acheter &agrave; ce prix autant d'actions que vous voulez.<span style="color: #800000;">\n</span>Tout le monde peut vendre &agrave; ce prix.<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Symbole : MYT4U                         Prix du jour : 5&#128;&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;          Fourchette de variation : 10 &#128; - 30 &#128;<span style="color: #800000;">\n</span>&quot;</span>&lt;&lt;std::endl;
    std::cout&lt;&lt;<span style="color: #FF0000;">&quot;Voulez-vous acheter ces actions? (o/n)&quot;</span>&lt;&lt;std::endl;
    <span style="color: #0000ff;">while</span><span style="color: black;">&#40;</span> <span style="color: black;">&#40;</span>rep=getch<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>!=<span style="color: #FF0000;">'o'</span> &amp;&amp; rep!=<span style="color: #FF0000;">'O'</span> &amp;&amp; rep!=<span style="color: #FF0000;">'n'</span> &amp;&amp; rep!=<span style="color: #FF0000;">'N'</span><span style="color: black;">&#41;</span>
      ;
    <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>rep==<span style="color: #FF0000;">'o'</span> || rep==<span style="color: #FF0000;">'O'</span><span style="color: black;">&#41;</span>
      acheter_actions<span style="color: black;">&#40;</span>joueur,MYT4U,<span style="color: #cc66cc;">5</span><span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">break</span>;
  <span style="color: black;">&#125;</span>
  index_petite++;
  <span style="color: #0000ff;">if</span><span style="color: black;">&#40;</span>index_petite==<span style="color: #cc66cc;">3</span><span style="color: black;">&#41;</span>
    index_petite=<span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::choix_grosse_opportunite<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::vendre_bien_immo<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,bien_immobilier,<span style="color: #0000ff;">int</span> cout,<span style="color: #0000ff;">int</span> apport,<span style="color: #0000ff;">int</span> hypotheque,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> cashflow<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::vendre_carte_bien<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,bien_immobilier,<span style="color: #0000ff;">int</span> cout,<span style="color: #0000ff;">int</span> apport,<span style="color: #0000ff;">int</span> hypotheque,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> cashflow<span style="color: black;">&#41;</span><span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::acheter_actions<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur,symbole_action symbole,<span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> prix_du_jour<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span> <span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> jeu::tour_voie_rapide<span style="color: black;">&#40;</span><span style="color: #0000ff;">short</span> <span style="color: #0000ff;">int</span> joueur<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
une idée?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>emmesse</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179534/c-cpp/cpp/cannot-find-bounds-of-current-function/</guid>
		</item>
		<item>
			<title>C++26 : Concept et templates variables comme paramètre template, par Sandor Dargo</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179434&amp;goto=newpost</link>
			<pubDate>Tue, 23 Sep 2025 12:05:11 GMT</pubDate>
			<description>*C++26 : Concept et templates...</description>
			<content:encoded><![CDATA[<div><b><font size="4">C++26 : Concept et templates variables comme paramètre template, par Sandor Dargo</font></b><br />
<br />
La semaine dernière, <a rel="nofollow" href="https://www.sandordargo.com/blog/2025/08/13/use-concepts-with-remove_cvref" target="_blank">nous avons discuté des raisons pour lesquelles il est parfois nécessaire d'utiliser <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">remove_cvref_t</span> sur nos paramètres template avant de leur appliquer des concepts.</a> Nous avons également vu que cette solution n'est pas très lisible, car elle nous prive de la syntaxe concise et abrégée.<br />
<br />
Si seulement nous pouvions utiliser les concepts comme paramètres template !<br />
<br />
Heureusement, <a rel="nofollow" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2841r7.pdf" target="_blank">P2841R7</a> vient à notre secours, et il a récemment été accepté dans le cadre de C++26.<br />
<br />
À première vue, la proposition peut sembler intimidante, car elle compte près de 40 pages. Mais ne vous inquiétez pas. Tout d'abord, il s'agit d'un document très lisible, rempli d'explications claires et détaillées. Ensuite, environ la moitié consiste en des modifications de formulation.<br />
<br />
Plongeons-nous dans le vif du sujet.<br />
<br />
<b><font size="3">Les concepts en tant que template de paramètres template</font></b><br />
<br />
Le C++ permet déjà de passer des templates en tant que paramètres template, mais uniquement s'il s'agit de template de classe. Une raison courante pour cela est de permettre des abstractions de plus haut niveau. Par exemple, vous pouvez vouloir passer un template de conteneur comme <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">std::vector,</span> sans spécifier le type qu'il contient.<br />
<br />
Jason Turner explique bien cela dans <i>C++ Weekly - Ep 368 - The Power of template-template Parameters: A Basic Guide</i>.<br />
<br />
<div style="text-align: center;">
<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/s6Cub7EFLXo?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
</div><br />
Mais voici son exemple pour référence rapide :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">template</span>&lt;<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">typename</span> Contained, <span style="color: #0000ff;">typename</span> Alloc = std::allocator&lt;Contained&gt;&gt;
		 <span style="color: #0000ff;">typename</span> ResultType&gt;
<span style="color: #0000ff;">auto</span> get_data<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	ResultType&lt;<span style="color: #0000ff;">double</span>&gt; result;
	<span style="color: #808080;">// ...</span>
	<span style="color: #0000ff;">return</span> result;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
	<span style="color: #0000ff;">auto</span> data = get_data&lt;std::vector&gt;<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<br />
<br />
Avec une signature plus simple comme <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">template</span>&lt;<span style="color: #0000ff;">typename</span> ResultType&gt; <span style="color: #0000ff;">auto</span> get_data<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></span>, nous ne pouvions pas passer <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">std::vector</span>, car ce n'est pas un type complet, mais un template. Grâce aux templates de paramètres template, nous pouvons passer un template de classe à un autre template.<br />
<br />
Malheureusement, jusqu'à présent, cette technique ne fonctionnait pas avec les templates variables ou les concepts. Pourtant, la motivation pour passer un concept comme argument de template est similaire à celle qui nous pousse à passer des templates de classe : permettre des constructions expressives de haut niveau.<br />
<br />
La semaine dernière, nous avions ce template de fonction :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">template</span>&lt;<span style="color: #0000ff;">typename</span> Q&gt;
 <span style="color: #0000ff;">requires</span> Quantity&lt;std::remove_cvref_t&lt;Q&gt;&gt;
<span style="color: #0000ff;">void</span> foo<span style="color: black;">&#40;</span>Q&amp;&amp; q<span style="color: black;">&#41;</span>;</pre></td></tr></table></code><hr />
</div><br />
<br />
<br />
Avec un template de concept des paramètres template, nous pouvons introduire un concept d'aide, en d'autres termes un adaptateur de concept, afin d'améliorer la lisibilité :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">typename</span> T,
		 &lt;<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">typename</span>&gt; <span style="color: #0000ff;">concept</span> C&gt;
<span style="color: #0000ff;">concept</span> decays_to = C&lt;std::decay_t&lt;T&gt;&gt;;</pre></td></tr></table></code><hr />
</div><br />
<br />
<br />
Cela nous permet de réécrire notre fonction de manière plus claire :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">template</span> &lt;decays_to&lt;Quantity&gt; Q&gt;
<span style="color: #0000ff;">void</span> foo<span style="color: black;">&#40;</span>Q&amp;&amp; q<span style="color: black;">&#41;</span>;</pre></td></tr></table></code><hr />
</div><br />
<br />
<br />
<a rel="nofollow" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2841r7.pdf" target="_blank">La proposition</a> comprend plusieurs autres exemples qui pourraient s'avérer utiles.<br />
<br />
<b><font size="3">Template variables - paramètre template</font></b><br />
<br />
À partir de C++23, nous ne pouvons pas avoir de template variables  paramètre template. Bien qu'il existe des solutions de contournement, telles que l'encapsulation de variables dans des structures avec un membre de valeur pour les utiliser comme type de Template variables - paramètre template de paramètres template, celles-ci sont verbeuses, difficiles à lire et peuvent avoir un impact négatif sur les performances.<br />
<br />
En fait, la plupart des traits de type standard sont définis à la fois comme des types et des variables _v. Selon les benchmarks de performance de la proposition, l'utilisation de templates variables peut présenter des avantages significatifs en termes de performance de compilation et d'utilisation de la mémoire.<br />
<br />
La différence dans l'exemple de code présenté dans le document est minime :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">// Before</span>
<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">typename</span>&gt; <span style="color: #0000ff;">typename</span> p, <span style="color: #0000ff;">typename</span>... Ts&gt;
<span style="color: #0000ff;">constexpr</span> std::size_t count_if_v = <span style="color: black;">&#40;</span>... + p&lt;Ts&gt;::value<span style="color: black;">&#41;</span>;
<span style="color: #808080;">// After </span>
<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">typename</span>&gt; <span style="color: #0000ff;">auto</span> p, <span style="color: #0000ff;">typename</span>... Ts&gt;
<span style="color: #0000ff;">constexpr</span> std::size_t count_if_v = <span style="color: black;">&#40;</span>... + p&lt;Ts&gt;<span style="color: black;">&#41;</span>;</pre></td></tr></table></code><hr />
</div><br />
<br />
<br />
En éliminant <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">::value</span>, nous évitons la surcharge liée à l'instanciation d'un template de classe pour chaque <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Ts</span> — un changement apparemment mineur, mais qui a un impact significatif.<br />
<br />
<b><font size="3">Les détails syntaxiques</font></b><br />
<br />
La raison pour laquelle le concept et les templates variables de paramètres template apparaissent ensemble dans cette proposition n'est pas fortuite. Bien qu'ils aient été proposés séparément auparavant, ils sont tous deux essentiels pour prendre en charge les paramètres template universels, proposés dans <a rel="nofollow" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1985r3.pdf" target="_blank">P1985R3</a>.<br />
<br />
La proposition dont il est question ici (<a rel="nofollow" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2841r7.pdf" target="_blank">P2841R7</a>) est en fait un sous-ensemble de <a rel="nofollow" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1985r3.pdf" target="_blank">P1985R3</a>. Pour qu'un « paramètre template universel » soit à la hauteur de son nom, il doit prendre en charge un large éventail de formes d'arguments de template possibles, notamment les types, les templates de classe, les concepts et les templates variables.<br />
<br />
Voici comment nous spécifions habituellement un paramètre de modèle de modèle de classe uniquement :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">template</span>&lt;
	<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">typename</span> T&gt; <span style="color: #0000ff;">typename</span> TT
&gt;</pre></td></tr></table></code><hr />
</div><br />
<br />
<br />
Avec la nouvelle proposition, nous pouvons désormais inclure des concepts et des templates variables en utilisant respectivement les mots-clés concept et auto :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">template</span>&lt;
	<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">typename</span> T&gt; <span style="color: #0000ff;">typename</span> TT,
	<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">typename</span> T&gt; <span style="color: #0000ff;">concept</span> C,
	<span style="color: #0000ff;">template</span> &lt;<span style="color: #0000ff;">typename</span> T&gt; <span style="color: #0000ff;">auto</span> VT
&gt;</pre></td></tr></table></code><hr />
</div><br />
<br />
<br />
Il existe de nombreux autres aspects intéressants, comme la subsomption, mais je les aborderai dans un autre article afin que celui-ci reste concis et facile à comprendre.<br />
<br />
<b><font size="3">Conclusion</font></b><br />
<br />
L'acceptation de <a rel="nofollow" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2841r7.pdf" target="_blank">P2841R7</a> dans C++26 est l'une de ces améliorations discrètes mais puissantes. Elle nous permet d'écrire des modèles plus propres, plus flexibles et plus faciles à lire en autorisant à la fois les concepts et les templates variables comme paramètres template.<br />
<br />
Cela peut sembler être une fonctionnalité de niche, mais si vous avez déjà été confronté à une syntaxe de template maladroite ou à des wrappers standardisés juste pour faire passer des concepts ou des traits, vous apprécierez ce que cela vous apporte. Cela nous rapproche un peu plus de l'écriture d'un C++ expressif et de haut niveau qui semble plus naturel, sans sacrifier les performances.<br />
<br />
C'est un grand pas en avant pour tous ceux qui apprécient le C++ moderne et souhaitent disposer d'outils plus élégants pour la métaprogrammation. Et soyons honnêtes, moins de ::value clutter n'a jamais fait de mal à personne.<br />
<br />
Cet article est publié sous licence CC BY 4.0 par l'auteur.<br />
<br />
<b>Source</b> : <a rel="nofollow" href="https://www.sandordargo.com/blog/2025/08/20/cpp26-P2841" target="_blank">&quot;C++26: Concept and variable-template template-parameters&quot;</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Quel est votre avis sur le sujet ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://cpp.developpez.com/actu/351806/La-norme-Cplusplus23-supprime-la-prise-en-charge-du-Garbage-Collection-par-Sandor-Dargo-developpeur-Cplusplus/" target="_blank">La norme C++23 supprime la prise en charge du Garbage Collection, par Sandor Dargo, développeur C++</a><br />
<br />
:fleche: <a href="https://cpp.developpez.com/actu/352226/Le-Cplusplus-doit-etre-du-Cplusplus-une-opinion-qui-est-le-fruit-de-23-annees-d-experience-en-Cplusplus-par-David-Sankel/" target="_blank">Le C++ doit être du C++ : Une opinion qui est le fruit de 23 années d'expérience en C++, par David Sankel</a><br />
<br />
:fleche: <a href="https://cpp.developpez.com/actu/368969/Cplusplus-sous-steroides-Bjarne-Stroustrup-presente-des-profils-renforces-par-des-lignes-directrices-pour-la-securite-des-ressources-et-des-types-afin-de-garantir-que-le-code-est-contemporain-et-sur/" target="_blank">C++ sous stéroïdes : Bjarne Stroustrup présente des « profils » renforcés par des lignes directrices pour la sécurité des ressources et des types, afin de garantir que le code est contemporain et sûr</a></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>Sandor Dargo</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179434/c-cpp/cpp/cpp26-concept-templates-variables-parametre-template-sandor-dargo/</guid>
		</item>
		<item>
			<title>Problème de centrage de boîte de dialogue ComDlg32 : aucun flag ad hoc dans la structure de controle</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2177029&amp;goto=newpost</link>
			<pubDate>Wed, 21 May 2025 22:26:08 GMT</pubDate>
			<description>Désolé si le sujet a déjà été...</description>
			<content:encoded><![CDATA[<div>Désolé si le sujet a déjà été abordé, mais je n'arrive pas à avoir de réponse de la faq c++.<br />
Merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>Orohena</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2177029/c-cpp/cpp/probleme-centrage-boite-dialogue-comdlg32-aucun-flag-ad-hoc-structure-controle/</guid>
		</item>
		<item>
			<title><![CDATA[Mamadou Babaei : « C++ n’a pas besoin d’une nounou comme le vérificateur d'emprunts de Rust »]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176784&amp;goto=newpost</link>
			<pubDate>Mon, 12 May 2025 06:45:16 GMT</pubDate>
			<description>*Mamadou Babaei : « C++ n’a...</description>
			<content:encoded><![CDATA[<div><b><font size="4">Mamadou Babaei : « C++ n’a pas besoin d’une nounou comme le vérificateur d'emprunts de Rust »,</font></b><br />
<b><font size="1">faut-il vraiment changer de langage, ou simplement mieux maîtriser les outils existants ?   </font></b><br />
<br />
<b>Alors que Rust s’impose comme le champion de la sécurité mémoire grâce à son système de vérification à la compilation, certains développeurs C++ refusent de se laisser <a href="https://c.developpez.com/actu/364792/" target="_blank">reléguer au rang de programmeurs imprudents</a>. Avec un ton provocateur, le développeur professionnel de jeu Mamadou Babaei défend la capacité du C++ à détecter et corriger les fuites mémoire sans avoir besoin d’un « gardien de mémoire » comme Rust. À travers une démonstration concrète avec <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">_CrtDumpMemoryLeaks</span>, il relance le débat : faut-il vraiment changer de langage, ou simplement mieux maîtriser les outils existants ?</b><br />
<br />
<b><font size="3">Rust : un langage trop protecteur ?</font></b><br />
<br />
Rust a été acclamé ces dernières années comme l’un des langages les plus sécurisés pour le développement système. Sa principale innovation ? Le <i>borrow checker</i> (littéralement <i>vérificateur d'emprunts</i>), ce mécanisme de vérification à la compilation qui empêche les erreurs de mémoire comme les accès concurrents non sécurisés ou les use-after-free.<br />
<br />
Le vérificateur d'emprunts est une fonctionnalité essentielle du langage Rust et fait partie de ce qui rend Rust Rust. Il vous aide (ou vous oblige) à gérer la propriété. Comme le dit le chapitre 4 de « The Rust Programming Language », « La propriété est la caractéristique la plus unique de Rust, et elle permet à Rust de garantir la sécurité de la mémoire sans avoir besoin d'un collecteur mémoire ».<br />
<br />
Le vérificateur d'emprunt est un composant du compilateur Rust dont le rôle est de vérifier à la compilation que l’usage de la mémoire est sûr, sans fuite ni corruption potentielle, sans exécution du programme. Il repose sur trois concepts clés :<br />
<ul><li style="">Propriété (ownership) : chaque valeur a un propriétaire unique.</li><li style="">Emprunts (borrowing) : on peut prêter une valeur de manière mutable ou non mutable, mais pas les deux en même temps.</li><li style="">Durée de vie (lifetimes) : chaque référence a une durée de vie clairement définie et vérifiée.</li></ul><br />
Le borrow checker interdit à la compilation :<br />
<ul><li style="">Les accès concurrents à une même valeur mutable (race conditions évitées).</li><li style="">Les références à des valeurs qui ont été libérées (dangling pointers).</li><li style="">La modification de données pendant qu'elles sont empruntées de façon immuable.</li><li style="">L’utilisation après déplacement (move), pour éviter la double libération.</li></ul><br />
Mais pour certains développeurs C++, ce système ressemble davantage à une « nounou » : une surprotection qui entrave la liberté de coder rapidement et efficacement. Selon eux, les développeurs expérimentés n’ont pas besoin d’un langage qui leur interdit de faire certaines choses – ils veulent juste des outils qui les aident à le faire mieux, sans être bridés.<br />
<br />
<b><font size="3">Un faux procès fait au C++ ?</font></b><br />
<br />
Depuis l’essor de Rust dans les milieux de la sécurité et du développement système, une idée reçue semble s’installer : le C++ serait intrinsèquement dangereux. Ses critiques mettent en avant la complexité de sa gestion manuelle de la mémoire, source supposée d’erreurs fréquentes et de vulnérabilités critiques.<br />
<br />
Mais ce discours occulte une réalité plus nuancée : le C++ n’est pas dangereux par nature, il est exigeant. Comme le rappelle Babaei, les fuites mémoire et les erreurs d’allocation ne sont pas une fatalité si les développeurs exploitent les outils disponibles dans l’écosystème du langage.<br />
<br />
Ainsi, plutôt que de dénigrer le C++ pour son absence de mécanismes de sécurité intégrés à la Rust, il conviendrait de promouvoir les bonnes pratiques de développement, les outils de débogage avancés et les bibliothèques modernes comme RAII, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">unique_ptr</span>, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">shared_ptr</span>, ou encore <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Valgrind</span>.<br />
<br />
Dans sa vidéo intitulée « Rust Devs Think We’re Hopeless; Let’s Prove Them Wrong (with C++ Memory Leaks)! », Mamadou Babaei défend avec humour et technicité la capacité des développeurs C++ à gérer efficacement la mémoire, sans recourir aux mécanismes de sécurité stricts de Rust. Il démontre comment détecter les fuites mémoire en C++ en utilisant l'outil <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">_CrtDumpMemoryLeaks</span> fourni par la bibliothèque d'exécution C (CRT) de Microsoft.<br />
<br />
Et d'indiquer :<br />
<br />
« Lorsque les développeurs Rust pensent à nous, les gens du C++, ils imaginent une lignée maudite - un traumatisme générationnel transmis de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">malloc</span> à <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">free</span>. Pour eux, chaque ligne de C++ que nous écrivons est comme jouer à la roulette russe - sauf que les six chambres sont chargées de comportements non définis.<br />
<br />
« Ils nous regardent comme si nous étions sans espoir. Comme si nous étions à deux doigts d'une thérapie. Mais vous savez quoi ? Nous n'avons pas besoin d'une nounou pour le compilateur. Pas de vérificateur d'emprunts. Pas de durée de vie. Pas de modèles de propriété. Pas de magie noire. Même Valgrind n'est pas nécessaire. Juste des pointeurs bruts, de la détermination brute, et un peu de santé mentale douteuse.<br />
<br />
« Dans cette vidéo, je vais donc vous montrer comment traquer les fuites de mémoire comme si vous étiez né avec un pointeur dans une main et un débogueur dans l'autre ».<br />
<br />
<div style="text-align: center;">
<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/mmUAdCzrdmQ?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
</div><br />
<b><font size="3"><span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">_CrtDumpMemoryLeaks</span> : Un outil à (re)découvrir</font></b><br />
<br />
La démonstration de Babaei repose sur un outil méconnu mais redoutablement efficace : la fonction _CrtDumpMemoryLeaks, intégrée à la CRT (C Run-Time Library) de Microsoft. Elle permet, dès la compilation en mode debug, de détecter automatiquement les blocs de mémoire non libérés avant la fin de l’exécution.<br />
<br />
En couplant cet outil à des macros de suivi (_CRTDBG_MAP_ALLOC, new redéfini avec traçabilité), il devient possible de cartographier précisément l'origine d'une fuite mémoire. Cette démarche, bien que nécessitant une configuration spécifique, prouve que le C++ n’est pas dépourvu de garde-fous — il demande juste qu’on les active.<br />
<br />
<font size="3"><b>Démonstration : détection de fuites mémoire avec <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">_CrtDumpMemoryLeaks</span></b></font><br />
<br />
Babaei présente un exemple de programme C++ qui génère intentionnellement une fuite mémoire en allouant de la mémoire sans la libérer. Pour détecter cette fuite, il utilise les fonctions de débogage de la CRT. <br />
<br />
<b>Démonstration d'une fuite de mémoire en C++ simple et intentionnelle</b><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080; font-weight: bold;">/**</span>
<span style="color: #808080; font-weight: bold;">* Une fuite de m&eacute;moire en C++ simple et intentionnelle</span>
<span style="color: #808080; font-weight: bold;">*/</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;atomic&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;cstdint&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;cstdlib&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;ctime&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;iostream&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;string&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;thread&gt;</span>
&nbsp;
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> <span style="color: #0000ff;">int32_t</span> PASSWORD_LENGTH = <span style="color: #cc66cc;">1024</span> * <span style="color: #cc66cc;">1024</span>;
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> std::chrono::milliseconds INTERVAL_MILLISECONDS<span style="color: black;">&#123;</span><span style="color: #cc66cc;">1</span><span style="color: black;">&#125;</span>;
&nbsp;
std::string GeneratePassword<span style="color: black;">&#40;</span>std::size_t length<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">const</span> std::string charset<span style="color: black;">&#123;</span>
        <span style="color: #FF0000;">&quot;0123456789&quot;</span>
        <span style="color: #FF0000;">&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;</span>
        <span style="color: #FF0000;">&quot;abcdefghijklmnopqrstuvwxyz&quot;</span>
    <span style="color: black;">&#125;</span>;
&nbsp;
    <span style="color: #0000ff;">const</span> std::size_t maxIndex = charset.size<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    std::string result<span style="color: black;">&#40;</span>length, <span style="color: #FF0000;">'</span><span style="color: #800000;">\0</span><span style="color: #FF0000;">'</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span>std::size_t i = <span style="color: #cc66cc;">0</span>; i &lt; length; ++i<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        result<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> = charset<span style="color: black;">&#91;</span>rand<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> % maxIndex<span style="color: black;">&#93;</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">return</span> result;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int32_t</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    std::srand<span style="color: black;">&#40;</span><span style="color: #0000ff;">static_cast</span>&lt;<span style="color: #0000ff;">uint32_t</span>&gt;<span style="color: black;">&#40;</span>std::time<span style="color: black;">&#40;</span><span style="color: #0080ff;">nullptr</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
    std::atomic&lt;<span style="color: #0000ff;">bool</span>&gt; stop<span style="color: black;">&#123;</span><span style="color: #0080ff;">false</span><span style="color: black;">&#125;</span>;
&nbsp;
    std::thread inputThread<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>&amp;stop<span style="color: black;">&#93;</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        std::cin.get<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
        stop = <span style="color: #0080ff;">true</span>;
        <span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>!stop<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        std::string* password<span style="color: black;">&#123;</span><span style="color: #0000ff;">new</span> std::string<span style="color: black;">&#40;</span>GeneratePassword<span style="color: black;">&#40;</span>PASSWORD_LENGTH<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#125;</span>;
&nbsp;
        std::cout
            &lt;&lt; <span style="color: #FF0000;">&quot;Generated password:&quot;</span>
            &lt;&lt; <span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>&quot;</span>
            &lt;&lt; *password
            &lt;&lt; <span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span><span style="color: #800000;">\n</span>&quot;</span>
            &lt;&lt; <span style="color: #FF0000;">&quot;Press the 'Enter' key to interrupt!&quot;</span>
            &lt;&lt; std::endl;
&nbsp;
        std::this_thread::sleep_for<span style="color: black;">&#40;</span>INTERVAL_MILLISECONDS<span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    inputThread.join<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    std::cout &lt;&lt; <span style="color: #FF0000;">&quot;'Enter' key detected! Will stop!&quot;</span> &lt;&lt; std::endl;
&nbsp;
    <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<b>Une démonstration de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">_CrtDumpMemoryLeaks</span></b><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080; font-weight: bold;">/**</span>
<span style="color: #808080; font-weight: bold;">* Une d&eacute;monstration de _CrtDumpMemoryLeaks</span>
<span style="color: #808080; font-weight: bold;">*/</span>
<span style="color: #339933;">#define MEMORY_LEAK_TRACKER 1</span>
&nbsp;
<span style="color: #339933;">#if MEMORY_LEAK_TRACKER</span>
<span style="color: #339933;">#define _CRTDBG_MAP_ALLOC</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;crtdbg.h&gt;</span>
&nbsp;
<span style="color: #339933;">#define DEBUG_NEW new (_NORMAL_BLOCK, __FILE__, __LINE__)</span>
<span style="color: #339933;">#define new DEBUG_NEW</span>
<span style="color: #339933;">#endif  /* MEMORY_LEAK_TRACKER */</span>
&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;atomic&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;cstdint&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;cstdlib&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;ctime&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;iostream&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;string&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;thread&gt;</span>
&nbsp;
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> <span style="color: #0000ff;">int32_t</span> PASSWORD_LENGTH = <span style="color: #cc66cc;">64</span>;
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">constexpr</span> std::chrono::milliseconds INTERVAL_MILLISECONDS<span style="color: black;">&#123;</span><span style="color: #cc66cc;">1000</span><span style="color: black;">&#125;</span>;
&nbsp;
std::string GeneratePassword<span style="color: black;">&#40;</span>std::size_t length<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">const</span> std::string charset<span style="color: black;">&#123;</span>
        <span style="color: #FF0000;">&quot;0123456789&quot;</span>
        <span style="color: #FF0000;">&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;</span>
        <span style="color: #FF0000;">&quot;abcdefghijklmnopqrstuvwxyz&quot;</span>
    <span style="color: black;">&#125;</span>;
&nbsp;
    <span style="color: #0000ff;">const</span> std::size_t maxIndex = charset.size<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    std::string result<span style="color: black;">&#40;</span>length, <span style="color: #FF0000;">'</span><span style="color: #800000;">\0</span><span style="color: #FF0000;">'</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span>std::size_t i = <span style="color: #cc66cc;">0</span>; i &lt; length; ++i<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        result<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> = charset<span style="color: black;">&#91;</span>rand<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> % maxIndex<span style="color: black;">&#93;</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">return</span> result;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int32_t</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
<span style="color: #339933;">#if MEMORY_LEAK_TRACKER</span>
    <span style="color: #0000ff;">int</span> dbgFlags = _CrtSetDbgFlag<span style="color: black;">&#40;</span>_CRTDBG_REPORT_FLAG<span style="color: black;">&#41;</span>;
    dbgFlags |= _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF;
    _CrtSetDbgFlag<span style="color: black;">&#40;</span>dbgFlags<span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #808080;">// Only track one allocation per run!</span>
    <span style="color: #808080;">// e.g. allocation number that causes leaks:</span>
    <span style="color: #808080;">//_CrtSetBreakAlloc(162);</span>
<span style="color: #339933;">#endif  /* MEMORY_LEAK_TRACKER */</span>
&nbsp;
    std::srand<span style="color: black;">&#40;</span><span style="color: #0000ff;">static_cast</span>&lt;<span style="color: #0000ff;">uint32_t</span>&gt;<span style="color: black;">&#40;</span>std::time<span style="color: black;">&#40;</span><span style="color: #0080ff;">nullptr</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
    std::atomic&lt;<span style="color: #0000ff;">bool</span>&gt; stop<span style="color: black;">&#123;</span><span style="color: #0080ff;">false</span><span style="color: black;">&#125;</span>;
&nbsp;
    std::thread inputThread<span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>&amp;stop<span style="color: black;">&#93;</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        std::cin.get<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
        stop = <span style="color: #0080ff;">true</span>;
        <span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">while</span> <span style="color: black;">&#40;</span>!stop<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        std::string* password<span style="color: black;">&#123;</span><span style="color: #0000ff;">new</span> std::string<span style="color: black;">&#40;</span>GeneratePassword<span style="color: black;">&#40;</span>PASSWORD_LENGTH<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#125;</span>;
&nbsp;
        std::cout
            &lt;&lt; <span style="color: #FF0000;">&quot;Generated password:&quot;</span>
            &lt;&lt; <span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span>&quot;</span>
            &lt;&lt; *password
            &lt;&lt; <span style="color: #FF0000;">&quot;<span style="color: #800000;">\n</span><span style="color: #800000;">\n</span>&quot;</span>
            &lt;&lt; <span style="color: #FF0000;">&quot;Press the 'Enter' key to interrupt!&quot;</span>
            &lt;&lt; std::endl;
&nbsp;
        std::this_thread::sleep_for<span style="color: black;">&#40;</span>INTERVAL_MILLISECONDS<span style="color: black;">&#41;</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    inputThread.join<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
    std::cout &lt;&lt; <span style="color: #FF0000;">&quot;'Enter' key detected! Will stop!&quot;</span> &lt;&lt; std::endl;
&nbsp;
<span style="color: #339933;">#if MEMORY_LEAK_TRACKER</span>
    _CrtDumpMemoryLeaks<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
<span style="color: #339933;">#endif  /* MEMORY_LEAK_TRACKER */</span>
&nbsp;
    <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<b>Explication</b><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#define MEMORY_LEAK_TRACKER 1</span>
&nbsp;
<span style="color: #339933;">#if MEMORY_LEAK_TRACKER</span>
<span style="color: #339933;">#define _CRTDBG_MAP_ALLOC</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;crtdbg.h&gt;</span>
&nbsp;
<span style="color: #339933;">#define DEBUG_NEW new (_NORMAL_BLOCK, __FILE__, __LINE__)</span>
<span style="color: #339933;">#define new DEBUG_NEW</span>
<span style="color: #339933;">#endif  /* MEMORY_LEAK_TRACKER */</span></pre></td></tr></table></code><hr />
</div><br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			Imaginons que nous construisions des maisons en LEGO et que nous oublions parfois de nettoyer les briques après la construction. Ce code dit : « Hé, activons un traqueur de briques LEGO ! ».<br />
<br />
Il ajoute une caméra magique (&lt;crtdbg.h&gt;) qui surveille l'endroit où nous laissons tomber les briques. Et lorsque nous utilisons de nouvelles briques pour construire quelque chose, il ajoute secrètement qui l'a construit et où dans le code. Ainsi, si nous oublions de nettoyer, nous saurons exactement <b>qui</b> a fait le désordre et <b>où</b>.<br />
<br />
Explication technique :<br />
<ul><li style="">_CrtSetDbgFlag(...) : Définit les drapeaux d'exécution pour activer le suivi des fuites de mémoire et le signalement automatique des fuites à la sortie du programme.</li><li style="">DBG_ALLOC_MEM_DF : Indique au tas de débogage de garder une trace des allocations de mémoire.</li><li style="">DBG_LEAK_CHECK_DF : Appelle automatiquement _CrtDumpMemoryLeaks() à la sortie de main().</li><li style="">_CrtSetBreakAlloc(162) : Fixe un point d'arrêt à la 162e allocation (telle qu'elle est comptée en interne par le tas CRT). Lorsqu'il est atteint, Visual Studio interrompt l'exécution afin que vous puissiez inspecter l'allocation à l'origine du problème. Vous pouvez commenter cette ligne sauf si vous essayez d'isoler une fuite spécifique dans un gros programme.</li></ul><br />
tl;dr ; _CrtSetDbgFlag(...) permet le suivi du tas au moment de l'exécution et les rapports de fuite ; _CrtSetBreakAlloc(N) vous permet de casser sur un numéro d'allocation spécifique.
			
		<hr />
	</div>
</div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#if MEMORY_LEAK_TRACKER</span>
    _CrtDumpMemoryLeaks<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
<span style="color: #339933;">#endif  /* MEMORY_LEAK_TRACKER */</span>
&nbsp;
    <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			À la toute fin, nous disons à la caméra : « Ok, montre-moi tout ce qu'on a oublié de nettoyer. »<br />
<br />
Elle envoie un rapport disant : « Hé ! Vous avez laissé une brique à la ligne 42 ! Et une autre à la ligne 57 ! »<br />
<br />
Explication technique :<br />
<ul><li style="">Déclenche manuellement un rapport de fuite juste avant l'arrêt du programme.</li><li style="">C'est optionnel si vous avez déjà activé _CRTDBG_LEAK_CHECK_DF - le CRT va automatiquement faire le dumping des fuites.</li><li style="">Mais l'appeler manuellement vous donne le contrôle sur le moment où le rapport de fuite se produit (par exemple, avant la destruction globale/statique).</li></ul><br />
tl;dr ; _CrtDumpMemoryLeaks() imprime manuellement les informations sur les fuites avec le pointeur et la taille.
			
		<hr />
	</div>
</div><div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p667266d1747032633/c-cpp/cpp/mamadou-babaei-cpp-n-besoin-d-nounou-verificateur-d-emprunts-rust/cpp.png/" border="0" alt="Nom : Cpp.png
Affichages : 69378
Taille : 694,5 Ko"  style="float: CONFIG" /></div><br />
<b><font size="3">Et si le problème était culturel, pas technique ?</font></b><br />
<br />
Le débat entre Rust et C++ révèle autant une opposition technique qu’une différence d’approche philosophique. Rust adopte une logique « zéro confiance », où le compilateur est conçu pour interdire les erreurs dès la phase de développement. Le développeur est contraint par le système de type, le borrow checker et les règles strictes de propriété.<br />
<br />
À l’inverse, C++ s’inscrit dans une tradition où le développeur est empowered : il est maître de la mémoire, du cycle de vie des objets, et libre d’enfreindre les règles – pour le meilleur ou pour le pire. Cette liberté est précieuse pour les experts, mais redoutable pour les débutants.<br />
<br />
Peut-on alors parler d’un clivage générationnel ? Les jeunes développeurs, formés dans un univers DevOps/API-first, privilégient souvent les langages sûrs par défaut, comme Rust, Go ou Python. Les vétérans du C++, eux, continuent de valoriser la performance brute, le contrôle total et la compatibilité avec des milliards de lignes de code existantes.<br />
<br />
<b><font size="3">C++ moderne : un langage en pleine mutation</font></b><br />
<br />
Il serait injuste de juger le C++ d’aujourd’hui à l’aune de sa version des années 90. Depuis C++11, le langage a largement évolué : gestion automatique de la mémoire avec std::unique_ptr, initialisation uniforme, constexpr, concepts, modules... Autant de fonctionnalités qui rapprochent la rigueur du C++ moderne des promesses de sécurité de Rust, sans sacrifier sa puissance.<br />
<br />
De plus, l’écosystème C++ s’est enrichi d’outils de détection de fuites multiplateformes (Valgrind, AddressSanitizer), d’environnements de test avancés (Catch2, GoogleTest), et de pratiques DevOps plus sûres (analyse statique, CI/CD intégrant des outils mémoire).<br />
<br />
<b><font size="3">Un choix plus idéologique que technique ?</font></b><br />
<br />
Ce débat dépasse la simple préférence syntaxique. Il reflète une vision du métier : écrire du code rapide, flexible et risqué ou privilégier la sûreté, la rigueur et la prévisibilité. La « nounou » Rust ne s’adresse peut-être pas aux vétérans du C++, mais elle forme une nouvelle génération de développeurs conscients que la fiabilité est souvent plus cruciale que la vitesse brute.<br />
<br />
Quoiqu'il en soit, il serait réducteur d’opposer frontalement Rust et C++. Les deux ont leur place dans l’écosystème logiciel. Certains projets, où la performance brute et l’accès natif au matériel priment, continueront de préférer le C++. D’autres, où la sécurité et la maintenabilité sont critiques, miseront sur Rust.<br />
<br />
Des initiatives hybrides apparaissent d’ailleurs, où Rust et C++ coexistent dans les mêmes projets. Mozilla, Dropbox, ou Android OS intègrent progressivement des composants Rust dans des bases C++ existantes. Et inversement, des développeurs Rust utilisent des bindings vers du code C++ pour profiter d’APIs éprouvées.<br />
<br />
<b><font size="3">Deux visions, une complémentarité possible ?</font></b><br />
<br />
La vidéo de Babaei ne cherche pas à nier les atouts de Rust, mais à réhabiliter la compétence et la responsabilité dans le développement C++. Oui, Rust permet de sécuriser des projets critiques avec un excellent niveau de garantie. Mais non, les développeurs C++ ne sont pas condamnés à produire du code truffé de bogues mémoire.<br />
<br />
Au contraire, la coexistence des deux langages pourrait s’avérer bénéfique : C++ pour les couches ultra-performantes et interopérables, Rust pour les modules sensibles où la sécurité mémoire est vitale. Certaines entreprises comme Microsoft, Mozilla ou AWS ont déjà commencé cette hybridation pragmatique.<br />
<br />
Sources : vidéo dans le texte, <a rel="nofollow" href="https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html" target="_blank">documentation Rust</a>, <a rel="nofollow" href="https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/crtdumpmemoryleaks" target="_blank">Microsoft</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Faut-il vraiment changer de langage, ou simplement mieux maîtriser les outils existants ?<br />
<br />
:fleche: Le borrow checker de Rust est-il un mal nécessaire ou une entrave à la créativité ?<br />
<br />
:fleche: Peut-on vraiment comparer deux langages à des stades aussi différents de maturité ?<br />
<br />
:fleche: Les outils de détection de fuites mémoire en C++ sont-ils suffisants pour garantir une gestion sûre de la mémoire dans des projets complexes ?<br />
<br />
:fleche:  La complexité du système de propriété de Rust justifie-t-elle son adoption face à la flexibilité de C++ ?<br />
<br />
:fleche:  Dans quels contextes la performance brute de C++ prime-t-elle sur les garanties de sécurité de Rust, et vice versa ?<br />
<br />
:fleche:  L'intégration d'outils de détection de fuites mémoire dans le processus de développement C++ est-elle devenue une norme incontournable ?<br />
<br />
:fleche: Rust est-il adapté aux débutants ou réservé aux ingénieurs systèmes expérimentés ?<br />
<br />
:fleche: Peut-on raisonnablement intégrer Rust dans des équipes historiquement C++ sans ralentir les projets ? L’écosystème de Rust est-il suffisamment mature pour rivaliser avec les bibliothèques et outils C++ ?</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p667266d1747032633/c-cpp/cpp/mamadou-babaei-cpp-n-besoin-d-nounou-verificateur-d-emprunts-rust/cpp.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>Stéphane le calme</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176784/c-cpp/cpp/mamadou-babaei-cpp-n-besoin-d-nounou-verificateur-d-emprunts-rust/</guid>
		</item>
		<item>
			<title><![CDATA[utilisation d'une DLL C++ depuis un serveur]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176720&amp;goto=newpost</link>
			<pubDate>Thu, 08 May 2025 14:54:21 GMT</pubDate>
			<description><![CDATA[Bonjour, 
J'ai un fichier...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
J'ai un fichier .dll qui exporte des fonctions que j'appelle depuis un script C++. J'aimerais utiliser ce script C++ depuis une page web, donc potentiellement créer une API REST. Cependant, j'ai lu que les fichiers .dll ne sont utilisables que sous Windows.<br />
Selon vous, comment pourrais-je faire pour atteindre mon objectif : exploiter les fonctions de la DLL depuis une page web ?<br />
Merci.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>OKI DOKI</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176720/c-cpp/cpp/utilisation-d-dll-cpp-serveur/</guid>
		</item>
		<item>
			<title>Code C++ Mount partiton Cryptsetup</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2176299&amp;goto=newpost</link>
			<pubDate>Sat, 19 Apr 2025 16:59:50 GMT</pubDate>
			<description><![CDATA[Bonjour à tous, 
 
J'aurais...]]></description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
J'aurais besoin d'un coup de pouce en C++ pour monter une partition Crypter avec Cryptsetup sur un Raspberry.<br />
<br />
L'objectif serait que mon appli C++ puissent monter la Partition au démarrage du Rasp. Pour le moment, je souhaite faire des essais avec la paraphrase dans l'appli C++. Après, je la gérerai autrement pour des raisons de sécurité.<br />
<br />
Quelqu'un aurait-il un peu de temps pour m'aider, SVP ? J'ai regardé du coté de l'API CryptSetup, mais je ne sait pas comment l'utiliser.<br />
<br />
J'utilise Netbeans pour compiler mes projets sur mon Raspberry en C++.<br />
<br />
Je suis amateur, comme vous pouvez le comprendre.<br />
<br />
J'ai juste besoin de faire le montage de la partition avec cette appli, SVP.<br />
Pour info j'ai déjà crypté puis monté la partition en ligne de commande. Cela fonctionne correctement.<br />
j'utilise un Raspberry PI5 avec la dernière version de RASPERRY PI OS<br />
<br />
Merci d'avance pour votre aide.<br />
<br />
Les liens que j'ai regardé mais je ne sais pas par où commencer. <br />
<a rel="nofollow" href="https://mbroz.fedorapeople.org/libcryptsetup_API/index.html#cactivate" target="_blank">https://mbroz.fedorapeople.org/libcr...html#cactivate</a><br />
<a rel="nofollow" href="https://stackoverflow.com/questions/54390467/use-libcryptsetup-to-open-a-plain-encrypted-partition" target="_blank">https://stackoverflow.com/questions/...pted-partition</a><br />
<br />
Oscar.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f19/c-cpp/cpp/">C++</category>
			<dc:creator>Oscar02</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2176299/c-cpp/cpp/code-cpp-mount-partiton-cryptsetup/</guid>
		</item>
	</channel>
</rss>
