Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
943 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  programmation séparée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

programmation séparée

n°990262
koala13
Posté le 22-02-2005 à 19:09:35  profilanswer
 

je fais un programme sur les classes en programmation séparée, c'est-à-dire qu'il y a un fichier.cpp qui contient les fonctions et  un fichier.h qui contient la déclaration des fonctions. Mais pour tout relier, il faut écrire une en-tête (là est le problème!)
 
Le fichier Vecteur.h a comme en-tête:
 
// Vecteur.h: interface for the Vecteur class.
#if !defined(AFX_VECTEUR_H__0E1BF777_9AA9_4C7E_9711_EB691155D51F__INCLUDED_)
#define AFX_VECTEUR_H__0E1BF777_9AA9_4C7E_9711_EB691155D51F__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
 
et le fichier stdafx.h a comme en-tête:
// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//      are changed infrequently
 
#if !defined(AFX_STDAFX_H__8FA4D038_CC51_4F29_A5E0_920AF9AB4F3F__INCLUDED_)
#define AFX_STDAFX_H__8FA4D038_CC51_4F29_A5E0_920AF9AB4F3F__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
 
Si vous y comprenez quelque chose, aidez-moi parce que je dois faire la même chose avec un fichier (qui s'appelle fonction.h) qui contient des fonctions qui ne sont pas membre de la classe Vecteur.
Si vous n'avez pas tout compris, j'eesayerai de mieu vous expliquer
Merci

mood
Publicité
Posté le 22-02-2005 à 19:09:35  profilanswer
 

n°990304
moi23372
Posté le 22-02-2005 à 19:27:13  profilanswer
 

me semble que c'est bien compliqué...
 
moi habituellement je fais comme ça
 
supposons un fichier test.cpp et test.h qui contienne comme tu l'as dis la déclaration des classes ainsi que l'implémentation...
 
ensuite, pour y avoir accès dans ton programme contenant le main(),
suffit de faire
 
include "test.h"
 
attention j'ai bien dis entre " " et pas en < >
 
ENFIN SI J'AI BIEN COMPRIS CE QUE TU VOULAIS...


Message édité par moi23372 le 22-02-2005 à 19:27:45
n°990395
printf
Baston !
Posté le 22-02-2005 à 20:32:34  profilanswer
 

MFC [:fear]

n°997723
popi016
Posté le 01-03-2005 à 23:12:07  profilanswer
 

koala13 a écrit :

je fais un programme sur les classes en programmation séparée, c'est-à-dire qu'il y a un fichier.cpp qui contient les fonctions et  un fichier.h qui contient la déclaration des fonctions. Mais pour tout relier, il faut écrire une en-tête (là est le problème!)
 
Le fichier Vecteur.h a comme en-tête:
 
// Vecteur.h: interface for the Vecteur class.
#if !defined(AFX_VECTEUR_H__0E1BF777_9AA9_4C7E_9711_EB691155D51F__INCLUDED_)
#define AFX_VECTEUR_H__0E1BF777_9AA9_4C7E_9711_EB691155D51F__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
 
et le fichier stdafx.h a comme en-tête:
// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//      are changed infrequently
 
#if !defined(AFX_STDAFX_H__8FA4D038_CC51_4F29_A5E0_920AF9AB4F3F__INCLUDED_)
#define AFX_STDAFX_H__8FA4D038_CC51_4F29_A5E0_920AF9AB4F3F__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
 
Si vous y comprenez quelque chose, aidez-moi parce que je dois faire la même chose avec un fichier (qui s'appelle fonction.h) qui contient des fonctions qui ne sont pas membre de la classe Vecteur.
Si vous n'avez pas tout compris, j'eesayerai de mieu vous expliquer
Merci


 
oui c'est bien complique ton histoire deja tu mettres :
 
#ifndef a la place de #if !defined
 
tu peux faire  
 
#ifndef (......)
#define ....
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
[tu declare la classe et ses membres]
 
#endif
 
c'est ton fichier .h
 
ensuite dans le .cpp
 
#include "fichier.h"  // fichier en-tête personnel
 
class::class(){}
class::fct1(){}
~class::class(){}
// autres fonctions membres....
 
et voila :D :D :D

n°997952
blastman
just me !
Posté le 02-03-2005 à 10:35:56  profilanswer
 

Bonjour tout le monde !  :hello:  
 
Je peux juste expliquer vite fait ce que c'est mais bon, je n'y connais pas grand chose non plus dans les en-têtes...
 

Citation :


#if !defined(AFX_STDAFX_H__8FA4D038_CC51_4F29_A5E0_920AF9AB4F3F__INCLUDED_)
#define AFX_STDAFX_H__8FA4D038_CC51_4F29_A5E0_920AF9AB4F3F__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


 
La premiére teste si le symbole commençant par AFX_STDAF_H__... a été defini.
 
# !defined est une directive qui met en oeuvre un test 'si non defini'
il fonctionne comme une instruction if.
 
Si le symbole de la directive n'existe pas, toutes les lignes de texte placées avant la directive #endif sont incluses, y compris la directive #define.
Dans le cas contraire, ces lignes #endif sont exclues
 
En fait sa permet d'éviter l'inclusion répétée du code du fichier dans un autre fichier.
A la premiére inclusion, le symbole commençant par AFX_STDAF_H__... est defini, ce qui evite des inclusions supplémentaires du même code.
 
En gros ces une protection pour éviter les problème liés à la duplication des définitions
 
La seconde paire dedirectives #if-#endfi remplit une fonction similaire, mais qui n'est disponible que sur les compilateur les plus récents (à vérifier à l'aide de _MSC_VER).
Si le compilateur est suffisament récent, la directive #pragma once est éxecutée, si bien qu'on a pas besoin de rouvrir le fichier
 
Voila, je sais pas si c'est bien expliqué et si cela peut aidé, mais j'ai fais de mon mieux.
 
--EDIT--
Je viens de trouver un liens si ca peut t'aider:
http://www.developpez.com/c/megacours/x2411.html


Message édité par blastman le 02-03-2005 à 10:43:49

---------------
http://www.blastmanu.info
n°998018
popi016
Posté le 02-03-2005 à 11:16:25  profilanswer
 

blastman a écrit :

Bonjour tout le monde !  :hello:  
 
Je peux juste expliquer vite fait ce que c'est mais bon, je n'y connais pas grand chose non plus dans les en-têtes...
 

Citation :


#if !defined(AFX_STDAFX_H__8FA4D038_CC51_4F29_A5E0_920AF9AB4F3F__INCLUDED_)
#define AFX_STDAFX_H__8FA4D038_CC51_4F29_A5E0_920AF9AB4F3F__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


 
La premiére teste si le symbole commençant par AFX_STDAF_H__... a été defini.
 
# !defined est une directive qui met en oeuvre un test 'si non defini'
il fonctionne comme une instruction if.
 
Si le symbole de la directive n'existe pas, toutes les lignes de texte placées avant la directive #endif sont incluses, y compris la directive #define.
Dans le cas contraire, ces lignes #endif sont exclues
 
En fait sa permet d'éviter l'inclusion répétée du code du fichier dans un autre fichier.
A la premiére inclusion, le symbole commençant par AFX_STDAF_H__... est defini, ce qui evite des inclusions supplémentaires du même code.
 
En gros ces une protection pour éviter les problème liés à la duplication des définitions
 
La seconde paire dedirectives #if-#endfi remplit une fonction similaire, mais qui n'est disponible que sur les compilateur les plus récents (à vérifier à l'aide de _MSC_VER).
Si le compilateur est suffisament récent, la directive #pragma once est éxecutée, si bien qu'on a pas besoin de rouvrir le fichier
 
Voila, je sais pas si c'est bien expliqué et si cela peut aidé, mais j'ai fais de mon mieux.
 
--EDIT--
Je viens de trouver un liens si ca peut t'aider:
http://www.developpez.com/c/megacours/x2411.html


 
 
Pourquoi deja tu as des identificateurs aussi longs :
AFX_STDAFX_H__8FA4D038_CC51_4F29_A5E0_920AF9AB4F3F__INCLUDED_
 
alors que AFX_STDAFX_H aurai suffit
 
et dans ton fichier fonctions.h tu repetes ces macros pour eviter les inclusions multiples et les test de version > 1000
 
#if !defined AFX_FONCTIONS_H.....
#define
 
#if _MSC_VER....
#pragma...
#endif
 
// et la tu déclare les protypes de fonctions
 
#endif // a ne pas oublier
 
ensuite dans le cpp tu  
#include "fonctions.h"
#include "vectors.h" ect...
 
et la tu definis les fonctions déclarees dans le fichier fonction.h
car tu ne peux pas les definir dans un entete :D :D :D
 
en esperant etre clair :D :D :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  programmation séparée

 

Sujets relatifs
Développement - ProgrammationJ'ai besion d'aide pour la programmation d'un jeu
logiciel de programmationProgrammation bas niveau pour disque dur
Creer son langage de programmationProgrammation VBA
Quel langage de programmation pour ce contexte?Comment évaluer ses compétences en programmation ?
Choix d'un logiciel de programmation C/C++.Aide de méthode de programmation pour mon programme
Plus de sujets relatifs à : programmation séparée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR