Générer des méthodes set/get pour une classe c++

Est-il un outil qui génère à définir et à obtenir des méthodes pour une classe automatiquement.

Juste que je créer des classes très fréquemment et que vous souhaitez avoir un outil qui, pour chaque classe-membre générera les fonctions suivantes automatiquement:

Member_Type getMemberName() const; //in header file
Member_Type getMemberName() const //in source file 
{
    return member;
}

void setMemberName(const Member_Type & val); //in header
void setMemberName(const Member_Type & val) //in source file 
{
    member = val;
}

J'ai rencontré une macro comme ceci mais il n'aimait pas l'idée:

#define GETSETVAR(type, name) \
private: \
    type name; \
public: \
    const type& get##name##() const { return name; } \
    void set##name##(const type& newval) { name = newval; }

Peut être que quelqu'un sait comment le faire avec MS Visual Studio, ou eny autre outil?

Si vous voulez que tous vos membres à être publiquement modifiables (et si vous faites vos classes ne fournissent pas toute l'abstraction) pourquoi ne pas les rendre publiques? Un struct le fait par défaut.
Beaucoup de réponses à la question suivante sont pertinentes: stackoverflow.com/questions/2977007/.... Bottom line: vous pouvez penser que vous voulez, mais c'est généralement une mauvaise idée.
Si la pratique de la programmation orientée objet vous oblige à faire quelque chose de stupide alors peut-être que la POO n'est pas la voie à suivre? La programmation orientée objet est un moyen pour une fin, pas un but en soi. L'objectif doit toujours être de bon, propre code. Ce n'est pas en quadruplant votre la taille du code et de l'écriture des getters/setters pour tout. (En dehors de cela, il n'est souvent pas bonne de la programmation orientée objet pratique pour ce faire. La classe doit exposer les opérations logiques qui ont du sens sur la classe. get/set ne sont généralement pas significatives des opérations, ils sont juste des raccourcis pour modifier les données internes de la classe.
Une classe pleine de getters et setters est l'antithèse de l'OO.
Vous avez demandé une meilleure solution: NE le faites PAS! Mettre en œuvre des fonctions qui ont un sens basé sur ce que la classe est et représente, et que la classe d'invariants. Automatiquement la production de getters et setters expose la mise en œuvre interne, en violation de l'encapsulation.

OriginalL'auteur Narek | 2010-06-05