Vorlagen für die setter und Getter

Ich bin nicht vertraut mit Vorlagen, aber ich Frage mich, ob es möglich ist, verwenden Sie für setter-und getter-Methoden. Zum Beispiel in dieser situation:

double exmlClass::getA(void) const
{
    return a_;
}



void exmlClass::setA(const double& a)
{
    a_ = a;
}



double exmlClass::getB(void) const
{
    return b_;
}

Wie Sie sehen können, die Methoden sind fast die gleichen, außer Sie beziehen sich auf eine andere private Variablen (a_, b_, c_). Gibt es eine elegantere Art und Weise zu schreiben, die diese Funktionen, oder ist es üblich, zu tun, wie oben in solchen Situationen? Und wenn seine häufige Verwendung von Vorlagen, würde ich schätzen Beispiel, wie Sie verwenden würden, die im code oben.

Andere Frage, die ich stellen würde, ist, wie sollten Getter und setter werden entsprechend deklariert. Ist es guter Programmierstil?

double getA(void) const;
void setA(const double& a);

double getB(void) const;
void setB(const double& b);

double getC(void) const;
void setC(const double& c);

Meine ich, sollten Getter werden immer const-und Set-Methoden nehmen Sie als argument die Referenz auf ein Objekt, anstatt es zu kopieren, das wäre wahrscheinlich ein bisschen langsamer?

  • Wenn Sie die Klasse Getter und setter in Mengen, dass das ein Thema ist, würde ich ernsthaft Frage sein design.
  • und dann einige
  • Ich Stimme mit @sbi zu einem Punkt. Wie, der Artikel anspielt, wenn Sie mit setter und Getter für den alleinigen Zweck der Zugriff auf etwas eigenes, dann ist es albern. Es gibt jedoch eine situation, die Artikel nicht berühren: wenn Sie einen legitimen benötigen, um die Behandlung von privaten Daten als semi - oder vollständig undurchsichtig (endianness, Serialisierung/de-Serialisierung ein paar zu nennen), vor allem, wenn der Typ dargestellt wird, umschließt mehr als ein Stück von Daten. Beispiel: codereview.stackexchange.com/questions/7786/...
  • Auch, da der Autor dieses Artikels nicht spell it out (es ist nur kurz erwähnt wird, nahe dem Ende), möchte ich etwas hervorheben aus dem Artikel: 3. A lack of essential operators and other methods forces user programs to manipulate the object through the get and set accessor functions. Wenn Ihr Accessoren sind die Operatoren, dies impliziert zumindest der Autor dieses Artikels würde nicht [unbedingt] haben die gleiche Beschwerde.
  • Gut, die OP ist dumme Getter und fragt, Ist es guter Programmierstil? Das ist ein sehr zuverlässiges Zeichen für einen newbie streunen vom Pfad der Wahrheit(™), anstatt jemand zu Fragen, Abstraktion, Weg einige Implementierungsdetails hinter Getter.
InformationsquelleAutor Overpain | 2010-11-16
Schreibe einen Kommentar