Generieren Sie die set/get-Methoden für eine c++ - Klasse

Gibt es irgendein tool, generiert set-und get-Methoden für eine Klasse automatisch.

Nur ich erstellen Klassen, die sehr Häufig und würde gerne ein tool haben, das für jede Klasse-Mitglied wil erzeugen die folgenden Funktionen automatisch:

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;
}

Traf ich ein makro wie dieses, aber nicht wie die Idee:

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

Kann jemand sein, der weiß, wie man das mit MS Visual Studio, oder eny anderen tool?

Wenn Sie möchten, dass alle Ihre Mitglieder öffentlich veränderbare (und wenn Sie Ihre Klassen nicht bieten jede Abstraktion) warum nicht nur machen Sie der öffentlichkeit? Ein struct tut dies standardmäßig.
Viele der Antworten auf die folgende Frage relevant: stackoverflow.com/questions/2977007/.... Bottom line: Sie denken vielleicht, Sie wollen dies, aber es ist in der Regel eine schreckliche Idee.
Wenn OOP Praxis erfordert, dass Sie etwas tun, dumm, dann vielleicht OOP ist nicht der Weg zu gehen? OOP ist ein Mittel zum Zweck, nicht ein Ziel in sich selbst. Das Ziel sollte immer sein, gute, saubere code. Das bekommt man nicht durch die Vervierfachung Ihrer code-Größe, und schreiben Getter/setter für alles. (Abgesehen davon, ist es oft nicht gut OOP-Praxis, dies zu tun. Sollte die Klasse setzen die logischen Operationen, die Sinn machen auf die Klasse an. get/set sind in der Regel nicht sinnvolle Operationen, Sie sind nur Verknüpfungen zu ändern, die Interna der Klasse.
Eine Klasse voller Getter und setter ist die Antithese von OO.
Sie bat für eine bessere Lösung: MACH DAS NICHT! Implementieren Sie Funktionen, die Sinn machen, basiert auf dem, was die Klasse und steht, was die Klasse der Invarianten sind. Automatisch produzieren Getter und setter macht die interne Implementierung, die Verletzung von Kapselung.

InformationsquelleAutor Narek | 2010-06-05

Schreibe einen Kommentar