begin process at 2012 05 29 20:39:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probleme avec structure utilisee dans une classe


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

Probleme avec structure utilisee dans une classe

lundi 30 août 2004 à 12:05:59 | Probleme avec structure utilisee dans une classe

fcoutel

Bonjour!

Tout d'abord, Meme si j'uitlise OPENGL ce probleme n'a rien a voir avec OPENGL.

Dans le meme fichier GLObject.h j'ai mis:

/* OpenGL Material Description*/
struct Material {
Vec4D ambient; // Ambient material color
Vec4D diffuse; // Diffuse material color
Vec4D specular; // Specular material color
Vec4D emission; // Emissive material color
float shininess; // Specular shininess
};


class GLObject: public QObject
{

Q_OBJECT // must include this in order to use Qt signals/slots

protected:
Vec3D position; // object position
Material material[2]; // Front and back material properties
..

public :
/* default constructor */
GLObject();

...
/*Construct with specified origin, options and front and back materials*/
GLObject(Vec3D pos,uint opts,const Material& front,const Material& back);

...

/*Set material for specified side (where side = 0 or 1)*/
void setMaterial(int side,const Material &mtl);

/*Get material for specified side (where side = 0 or 1)*/
void getMaterial(int side,Material &mtl) const;
..

et dans GLObject.cpp j'ai


/* Construct with specified origin and options and material*/
GLObject::GLObject(Vec3D pos,uint opts,const Material& front,const Material& back){
position.x=pos.x;
position.y=pos.y;
position.z=pos.z;
material[0]=front;
material[1]=back;
bbox.lowleft.x=-1.0f;
bbox.lowleft.y=-1.0f;
bbox.lowleft.z=-1.0f;
bbox.upright.x= 1.0f;
bbox.upright.y= 1.0f;
bbox.upright.z= 1.0f;
options=opts;
selected=FALSE;
hidden=FALSE;
setName("GLObject");
}

/*Set material for specified side (where side = 0 or 1)*/
void setMaterial(int side,const Material& mtl) {
GLObject::material[0]=mtl;
}

/*Get material for specified side (where side = 0 or 1)*/
void getMaterial(int side,Material& mtl) {
mtl=material[side];
}


et au compilateur (SUnWSPRO 6) j'ai deux erreurs du type
"GLObject.cpp", line 107: Error: material is not defined.

Pourquoi la variable est declaree dans le contsructeur mais pas dans la function membre?
J'ai essaye de change protected en public meme resultat.

MERCI!


lundi 30 août 2004 à 14:31:53 | Re : Probleme avec structure utilisee dans une classe

djl

"GLObject.cpp", line 107: Error: material is not defined.

et c'est quoi l'erreur dans le fichier header ?
lundi 30 août 2004 à 16:41:09 | Re : Probleme avec structure utilisee dans une classe

D1m3x


/*Set material for specified side (where side = 0 or 1)*/
void setMaterial(int side,const Material& mtl) {
GLObject::material[0]=mtl;
}


Cette fonctions est déclarée comme-ci elle n'appartenait pas à la classe, si tu veux implémentée celle définie dans la classe tu dois faire:

/*Set material for specified side (where side = 0 or 1)*/
void setMaterial(int side,const Material& mtl) {
material[0]=mtl;
}

Remarque que je ne met pas de GLObject:: devant le nom du membre, car ce n'est pas un membre statique!

Tu dois faire la même chose avec getMaterial, seulement ta façon de'implémenter une fonction get( ) est drôle, habituellement une fonction get est implémentée de cette façon:

Material GLObject::getMaterial( int side )
{
return material[ side ];
}


rien de plus simple =)

Je pense que l'erreur viennent du fait que tu implémente tes fonctions comme-ci elles ne faisaient pas parties de ta classe ;)

Ciao...

:.: [DmXx] [#eX-Concept @ QNet] :.:
lundi 30 août 2004 à 17:24:23 | Re : Probleme avec structure utilisee dans une classe

fcoutel

Merci de vos reponses mais:
Dans mon premier post j'avais fais une erreur j'avais mis GLOBject::material mais comme tu l'as fais remarque ce n'est pas bon. La fonction qui donne l'erreur est bien celle ci-dessous


void setMaterial(int side,const Material& mtl) {
material[0]=mtl;
}



Pour getMaterial tu as raison mais elle n'etais pas finie..
J'ai contourner mon probleme en declarant une nouvelle classe Material et en implementant les memes fonctions mais bon j'aimerais savoir pourquoi une simple structure ne marche pas;.

lundi 30 août 2004 à 18:33:23 | Re : Probleme avec structure utilisee dans une classe

djl

ta fonction doit etre membre de ta classe, et evite les parametres inutilent

et surtout les acsesseurs INLINE !
mardi 31 août 2004 à 21:38:48 | Re : Probleme avec structure utilisee dans une classe

leprov

djl pitite kestion. si ton accesseur est defini ds le .h il est inline (ou jai rien compris audebat de lautre fois), alors comment tu fais pr dire "la met pas en inline"? et pk pas d'accesseurs inline?
mardi 31 août 2004 à 23:04:51 | Re : Probleme avec structure utilisee dans une classe

djl

il faut que ce soit dans la declaration de la classe

en gros pour qu'un accesseur soit inline, il y a 2 facons

struct Foo
{

int x;
...
int getX() const
{ return x; }

};

ou

struct Foo
{
int x;
...
inline int getX() const;
};

inline int Foo::getX() const
{
return getX();
}


dans tout les cas ca doit etre dans un fichier header (jamais compilé separement)
mercredi 1 septembre 2004 à 00:21:58 | Re : Probleme avec structure utilisee dans une classe

leprov

ah ok....javais capté de travers...javais compris que
.h

type f (type);

.cpp

type f (type t)
{instructions;}

ca mettait inline...alors ke la si jai capté cest si corps directement ds la declaration, la cest inline. cest ca?
mercredi 1 septembre 2004 à 00:22:11 | Re : Probleme avec structure utilisee dans une classe

leprov

enfin tt ca ds une classe
mercredi 1 septembre 2004 à 08:57:56 | Re : Probleme avec structure utilisee dans une classe

djl

voila, si c'est dans la classe, ca l'est implicitement, sinon il faut specifier inline, mais jamais dans le .cpp (sinon ca sera pas inliner, du moins pour les autres modules compilés séparement)

1 2

Cette discussion est classée dans : const, side, material, specified, globject


Répondre à ce message

Sujets en rapport avec ce message

Fichier VMF [ par otofraise ] Bonjour a tous,Je ne sais pas si ce post est a sa place, mais je ne savais pas trop sur quel site de cs le placer.Je voudrais utiliser les fichiers VM Marche pas : Changer la résolution de l'écran [ par yserver ] Bojours.La réponse sera a prioris toute bête. Je pose qd même mon code qui à passer pour un idiot, mais faut bien avancer.Donc le pb c'est cette fonct Template [ par T_Mehdi ] salut a tous : bon ma question est facile c koi la diference entre ces 2 code ( car au niveau execution ca done la meme chose :s)  template genType r mais c koi cet héritage de m... [ par nomad56 ] salut, j'utilise wxWidgets et g un piti pb simple à régler surement mais je vois pas trop la subtilité moi personellement donc si kk1 pouvait m'aider c++, conversion char to const char [ par freekid ] char num;         cout /dev/modem         cin>>num;  &nbs Template: Spécialisation partielle [ par luhtor ] Bonsoir, j'ai une classe définie comme suit: template class operator_binary_pow;et notamment une fonction membre: template inline _T operator_bina Erreur avec enum [ par goutbouyo ] SAlut,J'essaie de compiler un code trouver sur le net :enum FrustumSide{ RIGHT = 0,  // The RIGHT side of the frustum LEFT = 1,  // The LEFT  side of Membres amies [ par gdefrance ] Bonsoir à tous, débutant en C++, j'ai besoin de votre aide pour trouver mon bug dans le programme.Voilà, je dois faire un exo avec un membre friend et


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 : 0,718 sec (4)

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