→ Feis: 你需要的是想辦法寫個 code 出來, 看敘述觀念不是很正確 09/02 23:03
→ Feis: 試看看有沒有辦法用最少的 code 重現你的敘述 09/02 23:07
→ BIAO: F大您好,我目前已經有寫code了XD 09/02 23:34
※ 編輯: BIAO (61.230.200.178), 09/02/2015 23:37:00
→ BIAO: 請問您說有問題的部份是哪裡呢? 09/02 23:37
→ Feis: 我的意思是你需要把你的敘述寫成 code 拿出來看 09/02 23:41
→ Feis: 我猜你是把物件的概念弄錯了 09/02 23:42
→ Feis: 你要拿你已經寫好的也可以 09/02 23:42
→ Feis: 不然我先問一下你有用到指標嗎 09/02 23:44
→ Feis: (釉藥猜謎了) 09/02 23:44
→ BIAO: 好的,我等等整理,謝謝您。 09/02 23:45
F大您好,相關程式碼如下,類別C及類別D存放至雲端硬碟,
類別C為CTransaction,類別D為CQueryData。
連結如下:(因縮址被系統判定廣告連結,故沒有縮址)
https://drive.google.com/folderview?id=0B-wgfyz-OoGLY1I1aVVTYU9uRlE&usp
=sharing
另列出類別A中和類別C及D相關的代碼,供您參閱,
其中m_odbcHelper為類別B的物件,再麻煩您了,謝謝您~
--
bool CDBAccessSystem::HandleCommand(HANDLE hPipe, LPVOID lpParam, OVERLAPPED
*Ovlap)
{
ODBCBaseCommand* lpODBCBaseCommand = (ODBCBaseCommand*)lpParam;
CTransaction* lpTransaction;
switch(lpODBCBaseCommand->CmdType)
{
case ODBCAddData:
lpTransaction = createTransaction(ODBCAddData);
lpTransaction->execute(hPipe, lpParam, Ovlap);
delete lpTransaction;
break;
case ODBCModifyData:
case ODBCDeleteData:
case ODBCQueryData:
lpTransaction = createTransaction(ODBCQueryData);
lpTransaction->execute(hPipe, lpParam, Ovlap);
delete lpTransaction;
break;
default:
break;
}
return TRUE;
}
CTransaction* CDBAccessSystem::createTransaction(int type)
{
CTransaction* lpTemp;
switch(type)
{
case ODBCAddData:
lpTemp = new CAddData(m_odbcHelper);
break;
case ODBCModifyData:
lpTemp = new CModifyData(m_odbcHelper);
break;
case ODBCDeleteData:
lpTemp = new CDeleteData(m_odbcHelper);
break;
case ODBCQueryData:
lpTemp = new CQueryData(m_odbcHelper);
break;
default:
break;
}
return lpTemp;
}
※ 編輯: BIAO (61.230.200.178), 09/03/2015 00:05:37
→ BIAO: 問題已自行解決,傳物件參考失敗!但傳物件指標就OK。 09/10 16:06
→ BIAO: 具體原因還得再想想~ 09/10 16:06