repial
Messages postés26Date d'inscriptionmercredi 20 septembre 2006StatutMembreDernière intervention 8 février 2009
-
24 sept. 2006 à 14:12
repial
Messages postés26Date d'inscriptionmercredi 20 septembre 2006StatutMembreDernière intervention 8 février 2009
-
26 sept. 2006 à 12:41
Bonjour, j'ai créé une classe qui a beaucoup de methodes. Certaines d'entre elle ne sont pas reconnues.
La compilation de la classe est ok, par contre quand je veux utiliser la méthode en question, dev-cpp me dit que la classe utilisée ne comporte pas la méthode utilisée.
La plupart des autres méthodes autour marchent bien. Je me demande donc s'il existe une taille limite dans l'écriture d'une classe.
Merci d'avance.
repial
Messages postés26Date d'inscriptionmercredi 20 septembre 2006StatutMembreDernière intervention 8 février 2009 24 sept. 2006 à 14:41
Alors dans la déclaration en public (.h) :
float getDx(void) const;
et pour l'implémentation (.cpp):
float cubic::getDx(void) const
{
return Dx;
}
avec Dx déclaré en privé (.h) : float Dx;
J'ai pas mal d'autre méthodes qui sont faites de la meme façon et qui ne posent pas de probleme .
repial
Messages postés26Date d'inscriptionmercredi 20 septembre 2006StatutMembreDernière intervention 8 février 2009 24 sept. 2006 à 14:59
Voila le .h , ce qui pose probleme est quand j'utilise cube.getDx() dans le main , cube etant une instance de cubic.
Dev-cpp me renvoit : 'class cubic' has no member named 'getDx'
#include
using namespace std;
#ifndef _cubich_
#define _cubich_
class cubic{
private:
int Nx;
int Ny;
int Nz;
int Nxm;
int Nym;
int Nzm;
float echelle;
float Dx;
float Dy;
float Dz;
int Nvar;
float rho;
float M;
float Ialpha;
float Ibeta;
float Iphi;
float Fgx;
float Fgy;
float Fgz;
float xc;
float yc;
float zc;
/*float f1p1x;float f1p2x;float f1p3x;float f1p4x; //vertex du cube, x
float f2p1x;float f2p2x;float f2p3x;float f2p4x;
float f3p1x;float f3p2x;float f3p3x;float f3p4x;
float f4p1x;float f4p2x;float f4p3x;float f4p4x;
float f5p1x;float f5p2x;float f5p3x;float f5p4x;
float f6p1x;float f6p2x;float f6p3x;float f6p4x;
repial
Messages postés26Date d'inscriptionmercredi 20 septembre 2006StatutMembreDernière intervention 8 février 2009 24 sept. 2006 à 15:08
Si peut etre a terme, mais je n'en suis pas encore la. C'est juste un premier jet pour l'instant, j'arrive pas encore a voir a l'avance ce qui est le plus pratique.
repial
Messages postés26Date d'inscriptionmercredi 20 septembre 2006StatutMembreDernière intervention 8 février 2009 24 sept. 2006 à 15:15
Ah d'accord je pensais que c etait une piste pour la résolution de mon probleme. Effectivement pour l'instant je ne me preoccupe pas du tout de la performance.
repial
Messages postés26Date d'inscriptionmercredi 20 septembre 2006StatutMembreDernière intervention 8 février 2009 24 sept. 2006 à 18:11
Je redemande mais une histoire de saturation de déclarations de méthode de classe en C++ c'est pas possible ?
Parce que vraiment la je ne vois pas. Par exemple getM marche tres bien, tout comme getNx et d autres encore mais pas getDx, get Dy, getDz, pareil pour les getf1p1x etc... (elles sont évidemment faites pareil, juste un return)
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 24 sept. 2006 à 18:25
Enfin pour le "const", j'ai juste perdu une journée de débuggage a
cause de ca. Si ca vous amuse vous. Vous n'etes pas obligé de mettre ce
petit const en plus.
Repial => post ici ta fonction main, enfin la ou tu utilises ta
classe. Car je vois pas pk tu as ce pb.
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 24 sept. 2006 à 18:43
L'exemple que vous donnez n'a rien à voir avec un accesseur d'une classe,
Le problème rencontré est du même ordre que le style if ( a 3 ) au lieu de if ( a 3 ) alors il vaudrait mieux écrire ( 3 == a )
par exemple.
Il aurait fallu faire dans ce cas, plutôt
const test t = GetValue();
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 24 sept. 2006 à 19:16
Ok, je vois le problème que tu as pu avoir.
en fait, tu voulais écrire :
mon_objet.setObj( test( 4.0 ) );
non ?
parce que une méthode "test& getObj() const;"
qui serait const mais qui permettrait de changer la valeur grâce à la référence retournée, ça serait pas terrible.
Enfin, peut être préfères tu le const en retour.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 24 sept. 2006 à 19:27
Pas tout a fait, j'ai pas fais une erreur de codage aussi grosse que ca quand meme : "test& getObj() const;" ^_^
Mais dans une classe, ca arrive de mélanger les fonctions du type:
void Set(type objet);
type Get() const;
et
type & Get();
const type & Get() const;
Donc en pensant avoir utiliser la deuxième solution sur une variable, j'ai écris la ligne:
type nouveau_object;
obj.Get() = nouveau_object;
Donc évidemment pas de pb a la
compilation. Alors qu'il se passe n'importe quoi en pratique. Alors que
maintenant (j'ai retenu la lecon), en définissant "const type Get() const".
On évite ce pb.