B
BFS
Значит нужно создать класс, методы которого обращались бы к контейнерным
типам, созданным в другом классе.
// Graf2Doc.h : interface of the CGraf2Doc class
//
#pragma once
#include "afxtempl.h"
class CGraf2Doc : public CDocument
{
protected: // create from serialization only
CGraf2Doc();
DECLARE_DYNCREATE(CGraf2Doc)
// Attributes
public:
CArray <CPoint,CPoint>mArray;
CArray <int>mint;
CArray <int>C1;
CArray <int>C2;
....................
///////////////////////////////////////////
//mrClass.cpp
#include "StdAfx.h"
#include "mRClass.h"
#include "mArrow.h"
#include "Graf2Doc.h"
#include "Graf2View.h"
#include <math.h>
mRClass::mRClass(void)
{
}
mRClass::~mRClass(void)
{
}
mstruct mRClass::Rastr(int i, float minrast, CPoint point)
{
CGraf2Doc* pDoc;
int fa1;
fa1 = pDoc->mint.GetAt(i);
Если так написать, то fa1 открываются все элементы CGraf2Doc, компилируется
всё нормально, но при выполнении, пишет, что вначале pDoc инициализировать
нужно.
В методах класса CGraf2View она инициализируется
CGraf2Doc* pDoc = GetDocument();
Но в моём классе, даже если я его делаю наследником CView(от этого класса
наследуется CGraf2View), в лучшем случае пишет ошибку, что CGraf2Doc и
GetDocument() вообще несовместимые вещи.
Что такого описано в классе CGraf2View, что в нём всё работает нормально?
Или может есть какой-нибудь другой способ выхода из этой ситуации?
P.S. пробовал создавать класснаследник CObject(в нём есть сериализация), но
не нашёл, как добавить в него методы работы с контейнерными типами данных,
как то: Add, GetAt(), GetCount, SetAtGrow()...
Заранее благодарю за ответ.
типам, созданным в другом классе.
// Graf2Doc.h : interface of the CGraf2Doc class
//
#pragma once
#include "afxtempl.h"
class CGraf2Doc : public CDocument
{
protected: // create from serialization only
CGraf2Doc();
DECLARE_DYNCREATE(CGraf2Doc)
// Attributes
public:
CArray <CPoint,CPoint>mArray;
CArray <int>mint;
CArray <int>C1;
CArray <int>C2;
....................
///////////////////////////////////////////
//mrClass.cpp
#include "StdAfx.h"
#include "mRClass.h"
#include "mArrow.h"
#include "Graf2Doc.h"
#include "Graf2View.h"
#include <math.h>
mRClass::mRClass(void)
{
}
mRClass::~mRClass(void)
{
}
mstruct mRClass::Rastr(int i, float minrast, CPoint point)
{
CGraf2Doc* pDoc;
int fa1;
fa1 = pDoc->mint.GetAt(i);
Если так написать, то fa1 открываются все элементы CGraf2Doc, компилируется
всё нормально, но при выполнении, пишет, что вначале pDoc инициализировать
нужно.
В методах класса CGraf2View она инициализируется
CGraf2Doc* pDoc = GetDocument();
Но в моём классе, даже если я его делаю наследником CView(от этого класса
наследуется CGraf2View), в лучшем случае пишет ошибку, что CGraf2Doc и
GetDocument() вообще несовместимые вещи.
Что такого описано в классе CGraf2View, что в нём всё работает нормально?
Или может есть какой-нибудь другой способ выхода из этой ситуации?
P.S. пробовал создавать класснаследник CObject(в нём есть сериализация), но
не нашёл, как добавить в него методы работы с контейнерными типами данных,
как то: Add, GetAt(), GetCount, SetAtGrow()...
Заранее благодарю за ответ.