Как лучше передавать объект в функцию?
От: Максим Рогожин Россия  
Дата: 06.04.18 19:40
Оценка:
Привет,
объясните, пожалуйста, как правильно/лучше делать если функции нужно только читать какие-то свойства объекта, но не нужно его менять:
class Document;

class DocumentAnalyser {
public:
   virtual bool analyse(const Document* doc) const; // передавать по указателю?
   virtual bool analyse(const shared_ptr<Document> doc) const; // или по shared_ptr лучше?
};

shared_ptr<Document> nextDocument();
documentAnalyser->analyse(nextDocument().get()); // так?
documentAnalyser->analyse(nextDocument()); // или так?


Если приложение однопоточное, то по указателю достаточно. А если многопоточное и другой поток может удалить документ, то тогда по shared_ptr. Правильно?

UPDATE:
А если nextDocument() вот так объявлена:
std::unique_ptr nextDocument();

тогда как лучше?
Отредактировано 06.04.2018 19:47 Максим Рогожин . Предыдущая версия . Еще …
Отредактировано 06.04.2018 19:43 Максим Рогожин . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.