Существует популярное руководство (Скотт Мейерс, Клаус Иглбергер и т. Д.), О котором я недавно подумал, и которое в основном предпочитаю не-членские (свободные) функции функциям-членам. Я замечаю, что действительно могу вытащить большинство своих функций-членов наружу, но мне трудно понять, когда это на самом деле что я должен делать.
Вот простой пример, функция, которая печатает вектор строк (частный элемент данных) для консоли некоторым форматированным способом:
void list::print() const {
std::cout << "Printing list -> " << list_.size() << " entries.\n";
std::cout << "--- START OF LIST ---\n";
for (const auto &s : list_) {
std::cout << s.size() << " : " << s << '\n';
}
std::cout << "--- END OF LIST ---\n";
}
Мне трудно принять решение в простых случаях, подобных этому, мне кажется, что в краткосрочной перспективе функция-член становится немного более элегантной, в то время как свободная функция может адаптироваться к нескольким объектам по мере того, как программа становится больше. У кого-нибудь есть какое-то эмпирическое правило, чтобы помочь решить? Я просто обдумываю это? Благодарю.
Задача ещё не решена.
Других решений пока нет …