我正在使用 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
指针自动引用类中m_MFCApplicationSet
声明的变量(检查构造函数参数)Doc
,但是在类的构造中给出这个指令时遇到了一些麻烦Doc
。是否有特定的或替代的方法来做到这一点?(对不起,如果这个任务有点初级,但我还是 C++ 的新手)