После работы с C# в течение последних десяти или двух лет мой C++ становится немного ржавым.Возвращаемый экземпляр вызывает ошибку «попытка ссылки на удаленную функцию»
Я пишу класс базы данных и имеют проблемы со следующим методом:
CRecordset CAccessDatabaseReader::ExecuteSqlQuery(LPCTSTR pszSqlQuery)
{
CRecordset recordSet(&m_Database);
recordSet.Open(CRecordset::forwardOnly, pszSqlQuery);
return CRecordset(recordSet);
}
Компилятор жалуется на линии с return
заявлением:
Ошибка C2280 «CRecordset :: CRecordset (const CRecordset &) ': попытка ссылки на удаленную функцию
Может кто-то помочь я точно понимаю, что здесь происходит?
CRecordset, как представляется, класс, не подлежащий копированию. У него нет конструктора копирования. –
В C++ вы можете отключить копирование класса, и это то, что сделал CRecordset. Вот почему вы не можете вернуть его по значению. – PaulMcKenzie
Чтобы «вернуть» класс на основе CObject, как это, вам, вероятно, придется использовать динамическое распределение. –