C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

static prive Vs namespace prive

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Jean-Marc Bourguet
Guest





PostPosted: Thu Jun 10, 2004 2:14 pm    Post subject: Re: static prive Vs namespace prive Reply with quote



"Aurélien REGAT-BARREL" <nospam-aregatba (AT) yahoo (DOT) fr.invalid> writes:

Quote:
Que préférez-vous ?

Ne pas mettre dans un .h des choses qui peuvent ne pas y etre.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Aurélien REGAT-BARREL
Guest





PostPosted: Thu Jun 10, 2004 2:16 pm    Post subject: static prive Vs namespace prive Reply with quote



Bonjour à tous,
l'énorme succès de ma question précédente m'amène à poser une question plus
coute :
que pensez-vous de l'utilisation d'un namespace privé dans le .cpp à la
place d'un membre statique privé dans le .h + .cpp.
Exemple simple : on veut compter le nombre de classes créées :

// --------- static privé ---------
// .h
class Compte
{
public:
Compte();
static int NombreDeClasses();

private:
static int s_NbClasses;
};

//.cpp
int Compte::s_NbClasses = 0;

int Compte::NombreDeClasses() { return s_NbClasses; }
Compte::Compte() { ++s_NbClasses; };

// --------- namespace privé ---------
// .h
class Compte
{
public:
Compte();
static int NombreDeClasses();
};

//.cpp
namespace
{
int NbClasses = 0;
}

int Compte::NombreDeClasses() { return ::NbClasses; }
Compte::Compte() { ++::NbClasses; };


Que préférez-vous ?

--
Aurélien REGAT-BARREL


Back to top
Aurélien REGAT-BARREL
Guest





PostPosted: Thu Jun 10, 2004 2:21 pm    Post subject: Re: static prive Vs namespace prive Reply with quote



Quote:
Ne pas mettre dans un .h des choses qui peuvent ne pas y etre.

C'est aussi mon avis.
Cela me pousse à cette question provocatrice : quelle est l'utilité d'une
variable membre static ?

--
Aurélien REGAT-BARREL



Back to top
Jean-Marc Bourguet
Guest





PostPosted: Thu Jun 10, 2004 3:26 pm    Post subject: Re: static prive Vs namespace prive Reply with quote

"Aurélien REGAT-BARREL" <nospam-aregatba (AT) yahoo (DOT) fr.invalid> writes:

Quote:
Ne pas mettre dans un .h des choses qui peuvent ne pas y etre.

C'est aussi mon avis.
Cela me pousse à cette question provocatrice : quelle est l'utilité d'une
variable membre static ?

Une classe en C++ a plusieurs fonctionnalites:
- type
- espace de nommage
- protection d'acces

Les membres statiques permettent de profiter des deux derniers sans
prendre en compte le premier.

Comme le seul autre moyen d'avoir une certaine protection d'acces sont
les namespaces anonymes et declarations statiques de fichiers qui sont
limites a un fichier, si on veut de la protection d'acces le choix est
restreint.

Pour les membres statiques publics, le choix est simplement celui du
meilleur espace de nommage.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Aurélien REGAT-BARREL
Guest





PostPosted: Thu Jun 10, 2004 4:03 pm    Post subject: Re: static prive Vs namespace prive Reply with quote

Est-ce que déclarer une classe dans un namespace privé te choque ou pas ?

// Data.h : interface d'accès aux données (lecture seule)
class Data
{
public:
int GetValue( int Index ) const;
protected:
std::vector<int> Values;
};


// PredefinedData.h : accès à des Data prédéfinies
namespace PredefinedData
{
Data GetPredefinedData( std::string DataName );
}

// PredefinedData.cpp
namespace // namespace privé
{
class DataFiller : public Data
{
public:
void AddValue( int V ) { this->Values.push_back( V ); }
};
}

namespace PredefinedData
{
Data GetPredefinedData( std::string DataName )
{
DataFiller data;
data.AddValue( 10 );
return data;
}
}

C'est ce que j'ai fait et je ne sais pas trop si c'est bien ou s'il y a
mieux.
Faudrait-il plutot créer la classe DataFiller dans ses propres fichiers (.h,
..cpp) et les mettres dans un répertoire private par exemple ?
Déclarer une classe dans un cpp me gêne un peu.
A+

--
Aurélien REGAT-BARREL


Back to top
Jean-Marc Bourguet
Guest





PostPosted: Thu Jun 10, 2004 4:08 pm    Post subject: Re: static prive Vs namespace prive Reply with quote

"Aurélien REGAT-BARREL" <nospam-aregatba (AT) yahoo (DOT) fr.invalid> writes:

Quote:
Est-ce que déclarer une classe dans un namespace privé te choque ou pas ?

C'est ce que j'ai fait et je ne sais pas trop si c'est bien ou s'il y a
mieux.

Ca ne me gene absolument pas.

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Aurélien REGAT-BARREL
Guest





PostPosted: Fri Jun 11, 2004 8:13 am    Post subject: Re: static prive Vs namespace prive Reply with quote

"Jean-Marc Bourguet" <jm (AT) bourguet (DOT) org> a écrit dans le message de
news:pxbbrjr5rb9.fsf (AT) news (DOT) bourguet.org...

Quote:
Ca ne me gene absolument pas.

Ok merci.
Je trouve ce procédé meilleur que de passer par friend.
A+

--
Aurélien REGAT-BARREL



Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.