Скажем, у меня есть shared_ptr
для массива:
std::shared_ptr<int> sp(new T[10], [](T *p) { delete[] p; });
И метод:
shared_ptr<T> ptr_at_offset(int offset) {
// I want to return a shared_ptr to (sp.get() + offset) here
// in a way that the reference count to sp is incremented...
}
В основном то, что я пытаюсь сделать, это вернуть новый shared_ptr
, который увеличивает счетчик ссылок, но указывает на смещение исходного массива; Я хочу избежать удаления массива, когда вызывающий использует массив при некотором смещении. Если я просто вернусь sp.get() + offset
, что может случиться, верно? И я думаю, что инициализация нового shared_ptr
, содержащего sp.get() + offset
, тоже не имеет смысла.
Новый для С++, поэтому не уверен, что я правильно подошел.