{
DECLARE_SERIAL (CPage)
private:
CString m_Strings [CountOfStrings];
CString m_Name;
HTREEITEM m_TreeItem;
public:
CString * GetString (BYTE Index)
{
return & M_Strings [Index];
}
CString * GetName ()
{
return & M_Name;
}
HTREEITEM GetTreeItem ()
{
return m_TreeItem;
}
void SetTreeItem (HTREEITEM TreeItem)
{
m_TreeItem = TreeItem;
}
CPage () {};
void Serialize (CArchive &);
};
Page.cpp:
# include "Stdafx.h"
# include "Page.h"
IMPLEMENT_SERIAL (CPage, CObject, 0)
void CPage :: Serialize (CArchive & ar)
{
CObject :: Serialize (ar);
if (ar.IsLoading ())
{
ar>> m_Name;
BYTE Counter;
for (Counter = 0; Counter
ar>> m_Strings [Counter];
}
}
Породження об'єктів
У файлі Book.cpp оголошується глобальна змінна - об'єкт класу програми CBookApp:
CBookApp theApp;
У перевантаженої функції-члені InitInstance () класу CBookApp створюються об'єкти класів документа, вікна та подання змісту:
BOOL CBookApp :: InitInstance ()
{
CSingleDocTemplate * pDocTemplate;
pDocTemplate = new CSingleDocTemplate (
IDR_MAINFRAME,
RUNTIME_CLASS (CBookDoc),
RUNTIME_CLASS (CMainFrame),
RUNTIME_CLASS (CLeftView));
AddDocTemplate (pDocTemplate);
return TRUE;
}
Клас вікна CMainFrame містить захищений атрибут класу CSplitterWnd, що надає доступ до поданням сторінки за допомогою виклику відкритої член-функції класу CMainFrame:
class CMainFrame: public CFrameWnd
{
protected:
CSplitterWnd m_wndSplitter;
public:
CBookView * GetRightPane ();
};
Об'єкт класу книги є відкритим атрибутом класу документа:
class CBookDoc: public CDocument
{
public:
CBookClass m_Book;
};
Всі структурні елементи книги (розділи, глави і сторінки) створюються в момент завантаження файлу книги з диска через оператор new:
CRazdel * Razdel = new CRazdel;
m_Razdels.Add (Razdel);
Виклик операцій
Виклик операцій для об'єктів в C + + може бути організований двома способами:
1) Якщо потрібно викликати операцію для змінної, що є об'єктом якого класу, то використовується оператор. *:
Object.MemberFunc ();
2) Якщо змінна є покажчиком на об'єкт класу, то доступ до методів, підтримуваним даними класом, організовується через оператор -> *:
pObject-> MemberFunc ();