VC++: impossible répartir classe entre .h et .cpp
Bonjour,
Je suis en train de me mettre à VC++...
Jusqu'ici, avec d'autres EDI, je répartissais mes classes entre un fichier .h (définitions de la classe) et un fichier .cpp (méthodes de la classe).
Or, avec VC++ express, je suis obligé de tout mettre dans le header, et donc le .cpp ne me sert à rien. Ensuite, bien entendu il faut mettre les .h en question dans le fichier de la Form. Si j'essaie de répartir mes sources de classe en .h et .cpp, j'ai des injures au link ! C'est quoi cette nouvelle manière de faire, où il faut mettre tout le code dans les headers, et ensuite les inclure dans Form.h ? :roll:
Y a -t-il un flag ou option à sélectionner ?
Hugo
[Résolu] Répartir classe entre .h et .cpp
Ça y est j'ai compris comment cela fonctionne :D . En fait il faut utiliser le fichier stdafx.h et le mettre en #include dans vos fichiers. Là où c'était pas évident, c'est qu'il ne faut pas mettre dans vos fichiers le nom de votre .h.
Voici un exemple, avec une forme qui s'appelle Bureau, une classe dans HCompiler.h, qui est développée en HCompiler.cpp, avec le stdafx.h en bas:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
// Fichier Bureau.h -----------------------------------------------------
#pragma once //<< Signifie "Ne lire qu'une fois".
namespace EssaiDelegate {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace HughesLib; //<<< Votre namespace ici.
…………..
// Fichier HCompiler.h ---------------------------------------------------
#pragma once //<< Signifie "Ne lire qu'une fois".
namespace HughesLib { //avec using dans Bureau.h, etc. si besoin.
using namespace System;
ref class HCompiler
{
delegate void PF();
PF ^BinCode;
String ^Resultat;
public:
HCompiler();
void F1() {Resultat+="F1;";}
…………..
// Fichier HCompiler.cpp ------------------------------------------------------
#include "stdafx.h"
namespace HughesLib { //avec using dans Bureau.h, etc. si besoin.
using namespace System;
HCompiler::HCompiler(void)
{
Resultat="";
BinCode=gcnew PF(this,&HCompiler::F1);
}
…………..
// Fichier stdafx.h : -----------------------------------------------------
// Fichier Include pour les fichiers Include système standard,
// ou les fichiers Include spécifiques aux projets qui sont
// utilisés fréquemment, et sont rarement modifiés.
#pragma once //<< Signifie "Ne lire qu'une fois".
// En-têtes supplémentaires nécessaires au programme:
#include "MaClasse.h"
#include "HCompiler.h" //<<< Le point névralgique est ici !!!
…………. |
Merci Médinoc, et à ceux qui ont essayé de voir où était ce pb.
Hugo