簡體   English   中英

我可以從函數返回CRecordset對象嗎?

[英]Can I return a CRecordset object from a function?

我在MFC vc ++中有我的項目。 我的UI和業務邏輯層與數據訪問層分開。 我有一個函數,可以從數據庫中選擇一些數據到CRecordset對象中。 該選擇查詢在數據訪問層中處理。 當我嘗試返回記錄集(以使用數據在UI中構造表)時,出現錯誤。

我嘗試了這個:

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'

CObject是不可復制的類。 復制副本被設為私有,以防止復制。

由於CRecordset繼承自CObject ,因此不提供自己的副本構造函數。 也不能復制。 按值返回需要存在一個復制(或移動)構造函數。

因此,您唯一的辦法就是使用“輸出參數”;否則,您將無法使用該參數。 讓調用者傳遞ExecuteSqlQuery應該填充的CRecordset

void COrderSearch::ExecuteSqlQuery(CString query, CRecordset& outRecords) {
  // populate outRecords
}

或返回指向CRecordset的智能指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM