![]() |
|
|
![]()
|
|
| BFS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 6.5.2007 Репутация: нет Всего: нет |
Значит нужно создать класс, методы которого обращались бы к контейнерным
типам, созданным в другом классе. // 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()... Заранее благодарю за ответ. |
|||
|
||||
| Greeen |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
Это сообщение отредактировал(а) Greeen - 6.5.2007, 14:58 -------------------- Подпись больше не нужна |
||||
|
|||||
| BFS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 6.5.2007 Репутация: нет Всего: нет |
Вопрос решён. Огромнейший респект Greeen!
Я совершенно забыл про (*.cpp) #ifdef _DEBUG void mRClass::AssertValid() const { CView::AssertValid(); } void mRClass::Dump(CDumpContext& dc) const { CView::Dump(dc); } CGraf2Doc* mRClass::GetDocument() const // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGraf2Doc))); return (CGraf2Doc*)m_pDocument; } #endif //_DEBUG и про (*.h) #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif }; #ifndef _DEBUG // debug version in Graf2View.cpp inline CGraf2Doc* mRClass::GetDocument() const { return reinterpret_cast<CGraf2Doc*>(m_pDocument); } #endif |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |