Salut, voila tu as eu un probleme d'inclusion sous Ms VC++.
Lors de la creation d'un projet sous Ms VC++, il genere automatiquement une série de fichier. Un d'eux s'appele stdafx.cpp, c'est en quelques sortes le fichier des inclusions diverses de tes librairies perso.
Note bien ceci: la syntaxe: #include <iostream> veut dire qu'on va utiliser la libraire de IO de base. Le précompilateur l'inclura donc dans le fichier où tu as inserer ce bout de code. Étant donné que iostream est un fichier header aussi il va à son tour inclure tous ses headers déclarer sur lui-meme, et cela se fait récursivement jusqu'au dernier fichier inclu par un quelconque header qui est déclaré sur un autre header. Il y a alors de fortes chance que tu tombes sur un fichier natif de l'API windows, ou comme le tien, "winuser.h" meme si tu ne sais pas que c'est toi meme qui l'a appelé.
Alors, chaque fichier inclu tout son contenu, donc les conflits de variable et de syntaxe peuvent apparaitre comme ça.
c'est pour cette raison qu'on place les fichiers qui ne sont pas necessaire dans le header dans le fichier .cpp lié à votre classe. ou encore dans le stdafx.cpp si vous avez choisi cette option. On ajoute alors les macro #pragma once suivi du nom du fichier. ceci indique qu'on veut seulement une fois.
Pour résourdre ton probleme , renseigne toi sur la maco: #pragma once et habitues toi à utiliser les header dans le stdafx et les .cpp. generalement pour une classe faut savoir que pour déclarer un objet sans son header dans la declaration de la classe, on passe par seulement avec les pointeurs.
exemple: .hpp
#pragma once
class cMonToto
{
public:
cMonToto(); //constructor
~cMonToto(); // destructor
private:
class cToto* mToto;
};
tu remarque que j'ai pas eu besoin de faire d'inclusion dans mon header.
le .cpp
aura l'ai de ceci:
#include "cMonToto.hpp"
#include <cToto.hpp>
cMonToto::cMonToto()
{
mToto= 0;
mToto = new cToto();
}
cMonToto::~cMonToto()
{
if(mToto)
{
delete mToto;
mToto= 0;
}
}