Совершенно очевидно, что вы хотите вернуть вызывающему объекту новый объект, на который вам не нужно хранить какие-либо ссылки. Для этого проще всего вернуть объект по значению.
OtherClass Class::my_method( ... ) {
return OtherClass( ... );
}
Затем в вызывающем коде вы можете сконструировать новый объект следующим образом.
{
Class m( ... );
OtherClass n( m.mymethod( ... ) );
}
Это позволяет избежать каких-либо забот о возврате ссылки на временные файлы или необходимости удаления от менеджера клиента возвращенного указателя. Обратите внимание, что для этого требуется, чтобы ваш объект был копируемым, но это законная и обычно реализуемая оптимизация для копии, которую следует избегать при возврате по значению.
Вам нужно будет рассмотреть общий указатель или аналогичный, только если вам нужно общее владение или если срок жизни объекта выходит за рамки вызывающей функции. В последнем случае вы можете оставить это решение на усмотрение клиента и при этом вернуть его по значению.
1011 * Е.Г. *
{
Class m( ... );
// Trust me I know what I'm doing, I'll delete this object later...
OtherClass* n = new OtherClass( m.mymethod( ... ) );
}