Sie wissen das wahrscheinlich, aber ich würde einfach Folgendes tun:
class Person {
public:
std::string name() {
return _name;
}
void name(std::string value) {
_name = value;
}
private:
std::string _name;
};
Dieser Ansatz ist einfach, verwendet keine cleveren Tricks und erledigt den Job!
Das Problem ist jedoch, dass einige Leute ihren privaten Feldern keinen Unterstrich voranstellen möchten und diesen Ansatz daher nicht wirklich verwenden können, aber zum Glück für diejenigen, die dies tun, ist es wirklich einfach. :) :)
Die get- und set-Präfixe verleihen Ihrer API keine Klarheit, machen sie jedoch ausführlicher. Ich glaube nicht, dass sie nützliche Informationen hinzufügen, weil jemand, der eine API verwenden muss, wenn die API sinnvoll ist, wahrscheinlich erkennt, was sie ist verzichtet auf die Präfixe.
Eine weitere Sache, es ist leicht zu verstehen, dass dies Eigenschaften sind, weil namees kein Verb ist.
Im schlimmsten Fall muss die Person, wenn sie konsistent ist und die Person nicht erkannt hat, dass name()es sich um einen Accessor und name(value)einen Mutator handelt, diese nur einmal in der Dokumentation nachschlagen, um das Muster zu verstehen.
So sehr ich C # liebe, ich glaube nicht, dass C ++ überhaupt Eigenschaften braucht!