В моем приложении мне нужно прочитать некоторые значения из некоторого источника, сохранить их некоторое время в хранилище, а затем применить.После применения значения не нужны и могут быть удалены из хранилища.
class Storage: public Singleton<...> {
public:
void addValue(int v) {values.push_back(v);}
// ...
private:
std::vector<int> values;
// ...
}
// read values from some source and keep them in the storage
void Init() {
for (...) {
Storage::Instance()->addValue(...);
}
}
// a few seconds later...
// apply values somehow and get rid of them
void Apply() {
auto &&values = Storage::Instance()->getValues();
// ideally, at this point Storage must not contain values array
// process values somehow
for auto i: values {
// ...
}
// values are not needed any longer
}
Мой вопрос: как мне реализовать метод getValues
?Можно ли реализовать его так, чтобы он очищал массив values
в Storage
после вызова (используя семантику перемещения или что-то еще)?Другими словами, нет необходимости сохранять values
в Storage
после того, как getValues
был вызван один раз.
Если это невозможно, мне придется реализовать дополнительный метод, скажем Storage::clearValues
, которыйМне нужно позвонить в конце Apply()
- это то, чего я стараюсь избегать.