Ниже сказано, что лучше, чем первое/второе в качестве публичных участников. Я считаю, что это почти так же плохо. Если вы предоставляете доступ к частной переменной за пределами класса, то в чем смысл? Не должны быть
T First(); void(or T) First(const T&)
Пример:
// Example 17-3(b): Proper encapsulation, initially with inline accessors. Later
// in life, these might grow into nontrivial functions if needed; if not, then not.
//
template<class T, class U>
class Couple {
Couple() : deleted_(false) { }
T& First() { return first_; }
U& Second() { return second_; }
void MarkDeleted() { deleted_ = true; }
bool IsDeleted() { return deleted_; }
private:
T first_;
U second_;
bool deleted_;
};