Вместо readNext()
, возвращая необработанный указатель на элемент, можете ли вы сконструировать вызов так, чтобы он возвращал умный указатель со счетчиком ссылок, который автоматически освободит свои ресурсы, когда счетчик ссылок на указатель станет равным нулю? Либо так, либо вам нужно будет найти способ получить указатель обратно, чтобы вы могли вызвать delete
на нем, прежде чем выделять больше памяти при следующем вызове readNext()
, когда increment()
вызывается снова.
Что касается "конца", то, что вы могли бы сделать в этом случае, - это провести некоторый тест в вашем классе Reader
, который определяет, достиг ли вы конца файла или какого-либо другого сценария окончания. Если да, верните false, в противном случае верните true. Например:
bool increment()
{
if (reader.not_end_of_file())
{
this->base_reference() = reader.readNext();
return true;
}
return false;
}
Так что теперь вы можете вызывать increment()
в цикле некоторого типа, и вы будете знать, когда вы достигнете конца файла или другого конца, потому что функция вернет false.