Инициализация, временный объект, auto_ptr..
От: Lenikur Россия  
Дата: 23.09.04 08:07
Оценка:
Всем привет!

Ситуация:

typedef std::auto_ptr<CGRecordset> CGRecordsetPtr;
//...
class CAppDBFactory
{
// ...
public:
  CGRecordsetPtr CreatePreparedRecordset(const std::string&);
// ...
};
//...
CAppDBFactory Factory;
// Вот так все замечательно, компилятор не ругается
// CGRecordsetPtr pRecordset = Factory.CreatePreparedRecordset(sSQLText);
// а если делать так,
CGRecordsetPtr pRecordset;
pRecordset = Factory.CreatePreparedRecordset(sSQLText);
// то компилятор ругается
// Could not find a match for 'CGRecordsetPtr::operator =(CGRecordsetPtr)'

Действительно, такого определения в auto_ptr нет и быть не может, у = в качестве аргумента ссылка на CGRecordsetPtr.
Так вот я не пойму, почему при инициалицации копирующий конструктор срабатывает, а оператор = нет?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.