Потихонечку влезаю в область STL, где еще не бывал.
У меня есть пара классов. Один класс статический и его метод возвращает ссылку на динамический экземпляр второго класса.
class A
{
// ...
};
class B
{
public:
static A* getA();
};
A* B::getA()
{
return new A();
}
Работаю с ним так:
A *obj;
// ...
obj = B::getA();
// ...
delete obj;
Т.к. это внедряю в существующее приложение с разветвленной логикой, писавшееся более 10 лет минимум 4 программистами-непрофессионалами (включая меня), то, чтобы не ошибиться с delete, решил попробовать использовать auto_ptr.
typedef std::auto_ptr<A> aptrA;
aptrA obj;
// ...
obj = aptrA(B::getA());
Т.к. конструкция "aptrA(B::getA())" в реальности много длиннее и легко ошибиться и написать просто "B::getA()", то хотелось бы сократить выражение сразу до "B::getA()".
Возможно ли вернуть auto_ptr из метода? Какие тут подводные камни?
В принципе, больше устроило бы преобразование A* -> aptrA через operator aptrA, но что-то сомневаюсь, что можно это сделать по указателю.