Привет,
объясните, пожалуйста, как правильно/лучше делать если функции нужно только читать какие-то свойства объекта, но не нужно его менять:
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();
тогда как лучше?