begin process at 2012 05 29 21:49:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Probleme de redéfinition dans une structure


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

Probleme de redéfinition dans une structure

mercredi 25 juin 2008 à 11:24:11 | Probleme de redéfinition dans une structure

Manubbosse

Bonjour à tous.

Je suis stagiaire dans une entreprise et je dois (entre autre) programmer un coeur de calcul (en C++) à intégrer dans un logiciel.
Malheureusement, je suis un vrai néophyte en matiere de programmation. J'ai donc quelques problemes.... (comment ça, normal?)

J'essaye de stocker les données entrées dans une boite de dialogue dans un tableau.
voici les parties de codes:

calcul facteur solaire.h:


struct

TAB_RESULTAT {

float tauSPface1;

float tauSPface2;

float rhoSPface1;

float rhoSPface2;

float emissiviteNface1;

float emissiviteNface2;

float epaisseur;

} ;

/*

struct TAB_RESULTAT Tab_Resultat[NB_MAX_COUCHE];

struct TAB_RESULTAT Tab_Resultat[2];

struct TAB_RESULTAT Tab_Resultat[3];

struct TAB_RESULTAT Tab_Resultat[4];

struct TAB_RESULTAT Tab_Resultat[5];

struct TAB_RESULTAT Tab_Resultat[6];

*/

//typedef struct TAB_RESULTAT TAB_RESULTAT;



 test3dlg.cpp:

TAB_RESULTAT Tab_Resultat [999];

// instanciation : mémoire réservée[...]

void

Ctest3Dlg::BtStockage()

{

int b;

for (b = 0; b < NB_MAX_COUCHE; b++)

{

Tab_Resultat[b].tauSPface1 = GetDlgItemInt(ED_TAUSP_0 + b);

Tab_Resultat[b].rhoSPface1 = GetDlgItemInt(ED_RHOSP_0 + b);

Tab_Resultat[b].tauSPface2 = GetDlgItemInt(ED_TAUSP_1 + b);

Tab_Resultat[b].rhoSPface2 = GetDlgItemInt(ED_RHOSP_1 + b);

Tab_Resultat[b].emissiviteNface1 = GetDlgItemInt(ED_EMISSIVITE_NORMALE_0 + b);

Tab_Resultat[b].emissiviteNface2 = GetDlgItemInt(ED_EMISSIVITE_NORMALE_1 + b);

Tab_Resultat[b].epaisseur = GetDlgItemInt(ED_EPAISSEUR_LAME_AIR + b);

}

}

 
  Lorsque je compile, cela me donne les erreurs suivantes:

calculs facteur solaire.h(11) : error C2011: 'TAB_RESULTAT' : redéfinition du type 'struct'

et plus loin:

test3dlg.cpp(151) : error C2027: utilisation du type non défini 'TAB_RESULTAT'

J'ai également mis dans le .h, en commentaire, d'autre essais pour résoudre mon probleme mais qui n'étaient pas concluant. 

Il me semble que j'ai bien déclaré ma structure... me serais-je trompé?
Merci beaucoup pour votre aide!!!!

Manu

mercredi 25 juin 2008 à 12:01:58 | Re : Probleme de redéfinition dans une structure

Neo_Fr

Membre Club
Dans ton fichier cpp tu a oublier de mettre 'struct' devant TAB_RESULTAT...
declare tes structures comme ca, ca t'evitera ce genre de problemes:

typedef struct _tab_resultat
{
    float tauSPface1;
    float tauSPface2;
    float rhoSPface1;
    float rhoSPface2;
    float emissiviteNface1;
    float emissiviteNface2;
    float epaisseur;
}TAB_RESULTAT, *LPTAB_RESULTAT;

Neo_Fr
mercredi 25 juin 2008 à 13:41:26 | Re : Probleme de redéfinition dans une structure

Manubbosse

En fait j'avais déjà essayé de mettre le:

struct  TAB_RESULTAT Tab_Resultat [999];

mais j'ai exactement la meme erreur.
 
Par contre, je ne comprends pas le *LPTAB_RESULTAT.

il faut utiliser un pointeur ?

en tout cas merci de ta réponse!

 

mercredi 25 juin 2008 à 13:55:18 | Re : Probleme de redéfinition dans une structure

Neo_Fr

Membre Club
LPTAB_RESULTAT est simplement un pointeur sur une struct du type TAB_RESULTAT..

Pour en revenir a ton probleme, ds ton header remplace ta declaration de ta struct par celle que j'ai poster plus haut, puis ds test3dlg.cpp rajoute le #include "solaire.h" tt en haut si ce n'est pas deja fait, puis declare ton tableau de structure comme ca:
TAB_RESULTAT Tab_Resultat[512];
Et la normalement ca compile sans erreur..

Neo_Fr
mercredi 25 juin 2008 à 14:25:33 | Re : Probleme de redéfinition dans une structure

Manubbosse

Nan, ça ne marche malheureusement pas.
J'obtiens toujours exactement la meme erreur.

est ce que ça peut etre du à l'ordre des includes dans test3dlg.cpp ?

#include

"stdafx.h"

#include

"test3.h"

#include

"test3Dlg.h"

#include

"calcul emmissivite corrigee.h"

#include

"calculs facteur solaire.h"


J'ai peut etre oublié autre part quelques chose d'évident mais auqel je ne pense pas parceque je suis débutant...
mercredi 25 juin 2008 à 16:31:06 | Re : Probleme de redéfinition dans une structure

SAKingdom

Membre Club
Réponse acceptée !
Si compilé en C++, mettre struct ou non devant la déclaration de la variable ne changera rien.

L'erreur dit: "redéfinition du type struct"

Ceci me laisse penser que tu redéfinis ta structure à plusieurs endroits.

Par exemple, si tu inclus solaire.h dans testDlg3d.h et test3.h, étant donné qu'il n'y a pas de protection afin d'éviter les inclusions multiples dans solaire.h, solaire.h se retrouvera, au final, inclus 2 fois dans test3dlg.cpp et ta structure y sera définit aussi 2 fois.

Essais d'ajouter ceci en tout début de fichier à solaire.h
#ifndef __INCL_SOLAIRE
#define __INCL_SOLAIRE

puis ceci en toute fin de fichier
#endif

Ça devrait empêcher solaire.h les problèmes d'inclusion multiple pour solaire.h. À prévoir pour tes autres header aussi.

C++ (@++)

mercredi 25 juin 2008 à 16:42:16 | Re : Probleme de redéfinition dans une structure

Manubbosse

Merci beaucoup!!!!!

Ca fonctionne bien maintenant et je vais pouvoir avance dans mon travail.


Encore merci a vous deux qui avaient pris le temps de me répondre.

C++ ( lool )

Manu


Cette discussion est classée dans : resultat, tab, float, struct, getdlgitemint


Répondre à ce message

Sujets en rapport avec ce message

Probl avec float et int [ par David2907 ] Après un calcul, comment faire pour afficher un resultat sans virgule ou un resultat avec virugule???Merci problemes de valeur chapitre 2 !! [ par pidoumtimo ] Bonjour a tous.J'ai encore quelques soucis avec des valeures numériques.Mon application effectue des calculs, qui se passent a merveille tant que les équation et tableaux [ par cabarrus ] je ne trouve pas l'erreur dans mon programme?#include#includeint deltanul(int);float deltainf(float);float deltasup(float);void main(void){float a,b,c [C++] precision [ par kikiops ] comment faire pour avoir des resultats float avec deux decimalesj'vous donne un ch'tit exemple , ca sera plus simple pour m'faire comprendrefloat a = [HELP] GetIpAddrTable [ par ghost260984 ] J ai creer un projet en VB qui entre autre récupérait l'adresse IP reso de la machine grace a l API GetIpAddrTable , maintenant je réutilise cette API question de collisions [ par laulau10 ] hello j'essaie de creer une dll de collision pour un moteur 3d qui est relativement lent. mais elle ne foinctionne pas et je ne trouve pas le pourquoi tableau a 2 dim [ par Kevin972 ] salut a tous!!g un probleme pour passer en parametre un tableau a 2 dimensions:fonction1(void){ float tab[400][400];............ fonction(tab);}fo explication reponse [ par 69lion69 ] <tr style="color: Black; background tableau de struct et fonction en C [ par sim51 ] Bonjour à tous. J'ai un petit problème de syntax, après plusieurs recherche sur le net, je n'ai pu ni affirmer ou ni infirmer la validation de mon cod problème avec SDL, struct? [ par foxley ] Bonjour, je suis nouveau ici.J'ai un projet en C à faire pour la fac.Et à vrai dire je suis bloqué a un endroit:"tab[i]->surface->w" afin de récuperer


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 1,232 sec (3)

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