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; };
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
"Aurélien REGAT-BARREL" writes:
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
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
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
Aurélien REGAT-BARREL
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
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 ?
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
Jean-Marc Bourguet
"Aurélien REGAT-BARREL" writes:
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
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
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
Aurélien REGAT-BARREL
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 ); } }; }
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
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 ); }
};
}
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+
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 ); } }; }
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
Jean-Marc Bourguet
"Aurélien REGAT-BARREL" writes:
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
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
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
Aurélien REGAT-BARREL
"Jean-Marc Bourguet" a écrit dans le message de news:
Ca ne me gene absolument pas.
Ok merci. Je trouve ce procédé meilleur que de passer par friend. A+
-- Aurélien REGAT-BARREL
"Jean-Marc Bourguet" <jm@bourguet.org> a écrit dans le message de
news:pxbbrjr5rb9.fsf@news.bourguet.org...
Ca ne me gene absolument pas.
Ok merci.
Je trouve ce procédé meilleur que de passer par friend.
A+