나는 내 프로젝트를 MFC vC++에서 가지고있다. 데이터 액세스 레이어와 분리 된 UI 및 비즈니스 로직 레이어가 있습니다. 데이터베이스에서 CRecordset 개체로 일부 데이터를 선택하는 함수가 있습니다. 이 선택 쿼리는 데이터 액세스 계층에서 처리됩니다. UI에서 테이블을 생성하기 위해 데이터를 사용하기 위해 레코드 세트를 반환하려고하면 오류가 발생합니다. 함수에서 CRecordset 개체를 반환 할 수 있습니까?
나는 노력이 :CRecordset COrderSearch::ExecuteSqlQuery(CString query)
{
CString sqlQuery;
CRecordset records;
CDatabase database;
sqlQuery = L"SELECT * FROM USers";
SetConnectionStr(connectionString); //set the connection string
ConnectToDatabase(); //database.open()
records.m_pDatabase = &database;
records.Open(CRecordset::dynaset, sqlQuery, CRecordset::readOnly);
return records;
}
오류 내가 얻을 :
error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
컴파일러가이 질문에 대답했습니다.이 질문은 명확한 아니오입니다! 오류 메시지가 가장 큰 것은 아니지만 실제로는 잘 봤습니다. –
'database'는 반환 할 때 파괴되는 로컬 변수이므로'records.m_pDatabase'는'ExecuteSqlQuery'가 리턴 한 후에 매달려있는 포인터가됩니다. – zett42