begin process at 2012 05 30 16:00:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Autre

 > 

redefinition de classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

redefinition de classe

mardi 1 avril 2008 à 17:04:50 | redefinition de classe

k1koo

bonjour j'ai un problème dès que je compile mon programme il me répond que je redéfinie mes classes : CComSerie.h:45: erreur: redefinition of 'class CComSerie' CComSerie.h:46: erreur: previous definition of 'class CComSerie' sous visual je sais que c'est la fonction #pragma once mais sous linux ? MERCI D'AVANCE
mardi 1 avril 2008 à 17:25:27 | Re : redefinition de classe

jfrancois

Bonjour,

Pour éviter les inclusions multiples sans utiliser le #pragma once :

#ifndef __FICHIER_HPP
#define __FICHIER_HPP

... tout le fichier d'entête ici ...

#endif // __FICHIER_HPP


C'est à dire que si 
la constante __FICHIER_HPP n'est pas définie, on la définit. Cela empêchera les inclusions suivantes puisque cette constante existera ! Comme nom de constante il faut utiliser un nom qui ne risque pas d'exister déjà, le construire à partir du nom du fichier est simple et plus sûr.

Jean-François

mardi 1 avril 2008 à 17:32:14 | Re : redefinition de classe

k1koo

Merci bien pour cette réponse ! jvai allez tester tt de suite ;)
mardi 1 avril 2008 à 17:39:38 | Re : redefinition de classe

k1koo

mais comment je peu l'utiliser ? voila les fichiers d'entete de mon main : #ifndef Watt #define Watt #include "Tension.h" #include "Intensite.h" #include "Puissance.h" #include "Wattmetre.h" #include "Envoi_Mail.h" #include "Save_PUI.h" #endif // Watt est ce bon comme ca ?
mardi 1 avril 2008 à 17:50:30 | Re : redefinition de classe

jfrancois

Ce qui donne :

Voilà les fichiers d'entête de mon main :
#ifndef Watt
#define Watt
#include "Tension.h"
#include "Intensite.h"
#include "Puissance.h"
#include "Wattmetre.h"
#include "Envoi_Mail.h"
#include "Save_PUI.h"
#endif // Watt


Alors non ! Ce genre de fonctionnalité ne se place pas du tout dans les fichiers C/C++ (.c/.cpp) mais dans les fichiers d'entête (.h/.hpp). Dans le fichier main :

#include "Tension.h"
#include "Intensite.h"
#include "Puissance.h"
#include "Wattmetre.h"
#include "Envoi_Mail.h"
#include "Save_PUI.h"


Et dans chacun de ces fichiers, par exemple Tension.h :

#ifndef __TENSION_H__
#define __TENSION_H__
... Contenu actuel du fichier Tension.h ...
#endif // __TENSION_H__

Avec Intensite.h :

#ifndef __INTENSITE_H__
#define __INTENSITE_H__
... Contenu actuel du fichier Intensite.h ...
#endif // __INTENSITE_H__

Jean-François

jeudi 3 avril 2008 à 10:36:53 | Re : redefinition de classe

k1koo

Merci bien j'ai compris en faite je mettais le #endif a la fin des fichiers #include alors qu'il fallait le mettre a la fin du fichier Merci bien de ta réponse très précise
jeudi 3 avril 2008 à 10:47:10 | Re : redefinition de classe

jfrancois

OK ! L'ensemble ifndef/define/endif doit encadré le contenu des fichiers qui risquent d'être inclus plusieurs fois, c'est à dire les fichiers d'entête .h/.hpp. Les fichiers source .c/.cpp n'ont aucune raison d'être inclus plusieurs fois.

Jean-François



Cette discussion est classée dans : erreur, classe, of, redefinition, ccomserie


Répondre à ce message

Sujets en rapport avec ce message

Inline asm + classe = erreur! [ par Darkneon ] Salut a tous.Lorsque je mets du codes assembleur dans ma classe le compilateur me renvoit l'erreur suivante."Inline assembly not allowed in inline and LNK2005 Already defined erreur [ par mortiis ] Bonjour à tousJe fait un projet win32 et il y a 3 fichiersmain.cpp ou il y a la fonction WinMainPMKApp.h ou il y a la déclaration de la classe CPMKApp Erreur de segmentation... Qu'est ce que c'est ??? :o [ par Rouliann ] Salut tout le monde j'ai un gros problème et malgré tous mes essais je n'arrive pas à le résoudre... Il n'y a pas d'erreurs à la compilation mais lors erreur dans la classe [ par Miss1 ] je n'arrive pas a compiler. le sujet est de crée une taille, un pointeur sur le 1er element du tableau, un constructeur, un constructeur par recopie , probleme de compilation DEBUG ERROR DAMAGE AFTER NORMAL BLOCK [ par ali_saguer1 ] Bonjour, Il se trouve que j'ai un projet en C++ et je suis complètement bloqué. A la fin de l'exécutionde mon projet , j'obtient le resultat que j'ai pb tm redefinition [ par Kyb ] Bonjour, je cherche ¨¤ creer un server web sous winCE et voici l'erreur  que j'obtient   en compilant sous Visual Studio:Erreur 1 error C2011: 'tm' : erreur variable dans une classe [ par pumab12 ] voila jai un probleme :: class SPEC Player : public Unit{    friend class WorldSession;    public:        explicit Player (WorldSession *session);     Sous classer plusieurs controles dans une classe [ par julien_boss ] Bonjour,je vous détail l'ossature de ma classe, qui crée une fenetre :jappelle une methode Create() qui va ... créer la fenetre, je fais passer dans l Redefinition d'opérateur [ par Francks11 ] bonjour,voila, j'ai une classe Chaine à réaliser (pour remplacer la classe String), donc je ne dois pas l'utiliser...ce que je souhaiterais, c'est red Erreur en C [ par lildan ] Bonjour,j'ai une erreur dans un programme en C que je compile avec DJGPP et c'est le suivant: In function main: incompatible implicit declaration of b


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales