IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

VC++: impossible répartir classe entre .h et .cpp


Sujet :

C++/CLI

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut 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 ?

    Y a -t-il un flag ou option à sélectionner ?

    Hugo

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Normalement, tu devrais pouvoir déplacer le corps des fonctions dans le .cpp sans problème, même si l'EDI met tout bêtement dans le .h.
    Si tu as des problèmes au Linkage, c'est que tu dois avoir fait une erreur...

    (enfin, il me semble bien. Je ne suis pas trop sûr de moi sur ce coup-là...)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut [Résolu] Répartir classe entre .h et .cpp
    Ça y est j'ai compris comment cela fonctionne . 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. couche de classe entre application et base de donnee
    Par Lord HaSaN dans le forum Accès aux données
    Réponses: 1
    Dernier message: 24/01/2007, 15h09
  2. Réponses: 12
    Dernier message: 14/08/2006, 12h55
  3. Réponses: 3
    Dernier message: 05/07/2006, 11h59
  4. classe iostream sous dev-cpp
    Par yashiro dans le forum Dev-C++
    Réponses: 3
    Dernier message: 18/04/2006, 17h34
  5. Réponses: 8
    Dernier message: 10/06/2005, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo