我正在開發一個使用MFC的客戶端數據庫,最近我試圖創建一個類來執行DAO操作(而不是直接在CDocument
類中實現這些操作)。我將這個類命名爲CModel
,並且CDocument
包含它。爲了使用CModel
類執行SQL操作,我必須能夠訪問m_session
變量(代表數據庫訪問會話),並且可以在RecordSet類中找到它 - 它代表我的數據庫中的一個表。下面是一段代碼,以更好地說明情況:構造函數中的指針初始化
#pragma once
#include "MFCApplicationSet.h"
class CModel
{
public:
CModel(CMFCApplicationSet ApplicationSet);
~CModel();
CMFCApplicationSet * pModelSet;
}
// Model.cpp : implementation file
//
#include "stdafx.h"
#include "MFCApplication.h"
#include "Model.h"
#include "SQLQuery.h"
#include "MFCApplicationSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CModel::CModel(CMFCApplicationSet ApplicationSet)
{
pModelSet = &ApplicationSet //not sure if it is right
}
CModel::~CModel()
{
}
// MFCApplicationDoc.h : interface of the CMFCApplicationDoc class
#pragma once
#include "MFCApplicationSet.h"
#include "Model.h"
class CMFCApplicationDoc : public CDocument
{
protected: // create from serialization only
CMFCApplicationDoc();
DECLARE_DYNCREATE(CMFCApplicationDoc)
// Attributes
public:
CMFCApplicationSet m_MFCApplicationSet;
CModel Model;
}
// MFCApplicationDoc.cpp : implementation of the CMFCApplicationDoc class
//
#include "stdafx.h"
#ifndef SHARED_HANDLERS
#include "MFCApplication.h"
#endif
#include "MFCApplicationSet.h"
#include "MFCApplicationDoc.h"
#include "Model.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
IMPLEMENT_DYNCREATE(CMFCApplicationDoc, CDocument)
BEGIN_MESSAGE_MAP(CMFCApplicationDoc, CDocument)
END_MESSAGE_MAP()
// CMFCApplicationDoc construction/destruction
CMFCApplicationDoc::CMFCApplicationDoc()
{
//problem in implementing a instruction to call the Model object constructor
}
CMFCApplicationDoc::~CMFCApplicationDoc()
{
}
我用調試器來分析我的代碼流,我注意到的是,從CMFCApplicationDoc
構造(CDocument
),從每個變量構造函數中聲明CMFCApplicationDoc.h
被初始化。這裏是我的問題:我試圖創建一個CModel
的構造函數,以便pModelSet
指針自動引用Doc
類中聲明的變量m_MFCApplicationSet
(檢查構造函數參數),但在構建內部指令時遇到了一些麻煩Doc
類。有沒有特定的或可能的替代方法來做到這一點? (抱歉,如果這個任務是一種基本的,但我還是很菜鳥的C++)
行動,錯字糾正! – Mudkip
那麼,我應該怎麼做才能讓pModelSet存儲一個非臨時對象的地址? – Mudkip
@Mudkip:好的,可能的解決方案是將構造函數更改爲'CModel(CMFCApplicationSet * ApplicationSet)',並在調用它時將地址傳遞給它。但是你應該在這裏使用一個參考。 – LihO