Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> class CMyView2, error C2039 
:(
    Опции темы
Kefir
Дата 17.7.2003, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



такая тут проблемка: рожаю CMyView2 от CView:
Код

class CMyView2 : public CView
{
protected:
CMyView2();
DECLARE_DYNCREATE(CMyView);
public:
void OnDraw(CDC* pDC);
CMyDoc* GetDocument();
};
CMyDoc* CMyView2::GetDocument()
{...}
void CMyView2::OnDraw(CDC* pDC)
{...}
IMPLEMENT_DYNCREATE(CMyView2, CView)
CMyView2::CMyView2()
{...}

и показываю это в сплиттере:
Код

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpCreateStruct, CCreateContext* pContext)
{
ASSERT(m_wndSplitter.CreateStatic(this, 1, 2));
ASSERT(m_wndSplitter.CreateView(0,0, RUNTIME_CLASS(CMyView),
 CSize(100,50), pContext));
ASSERT(m_wndSplitter.CreateView(0,1, RUNTIME_CLASS(CMyView2),
 CSize(100,50), pContext));
SetActiveView((CView*)m_wndSplitter.GetPane(0,1));
return TRUE;
}

На строке ASSERT(...CMyView2) он говорит непонятную ошибку:
error C2039: 'classCMyView2' : is not a member of 'CMyView2'
объясните что это значитconfused.gif
confused.gif confused.gif confused.gif
PM MAIL WWW Skype   Вверх
Kefir
Дата 17.7.2003, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



Простите покорнейше, нашёл тупейшую ошибку: написал DECLARE_DYNCREATE(CMyView) вместо DECLARE_DYNCREATE(CMyView2)
PM MAIL WWW Skype   Вверх
RAN
Дата 17.7.2003, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



Могу дать общую рекомендацию, как определять такие ошибки.
Для начала переведи сообщение (если с английским наочень). Твоя ошибка говорит, что метод classCMyView2 не определён в CMyView2.
Ты видишь, что ошибка в макросах. Так посмотри определение этих макросов:
Вот макрос RUNTIME_CLASS из MFC\include\AFX.h
Цитата
#define RUNTIME_CLASS(class_name) ((CRuntimeClass*)(&class_name::class##class_name))

Теперь понятно, что в твоём классе не хватает члена - объекта CMyView2::classCMyView2 класса CRuntimeClass.
Рассуждаем дальше: CView таких ошибок не даёт, смотрим CView:
Цитата
#ifdef _AFXDLL
class CView : public CWnd
#else
class AFX_NOVTABLE CView : public CWnd
#endif
{
DECLARE_DYNAMIC(CView)
.......................
/* дальше всё "прозрачно" и никакого CRuntimeClass объекта нет */
.......................


Смотрим DECLARE_DYNAMIC в MFC\include\AFX.h
Цитата

#ifdef _AFXDLL
#define DECLARE_DYNAMIC(class_name) \
protected: \
static CRuntimeClass* PASCAL _GetBaseClass(); \
public: \
static const AFX_DATA CRuntimeClass class##class_name; \
virtual CRuntimeClass* GetRuntimeClass() const; \

#define _DECLARE_DYNAMIC(class_name) \
protected: \
static CRuntimeClass* PASCAL _GetBaseClass(); \
public: \
static AFX_DATA CRuntimeClass class##class_name; \
virtual CRuntimeClass* GetRuntimeClass() const; \

#else
#define DECLARE_DYNAMIC(class_name) \
public: \
static const AFX_DATA CRuntimeClass class##class_name; \
virtual CRuntimeClass* GetRuntimeClass() const; \

#define _DECLARE_DYNAMIC(class_name) \
public: \
static AFX_DATA CRuntimeClass class##class_name; \
virtual CRuntimeClass* GetRuntimeClass() const; \

#endif


Вот оно: static const AFX_DATA CRuntimeClass class##class_name;. То есть тебе надо исправить DECLARE_DYNAMIC(CMyView) на DECLARE_DYNAMIC(CMyView2)

P.S. Не подумайте, что я тут умничаю, просто хотел поделиться опытом
PM MAIL ICQ   Вверх
Kefir
Дата 17.7.2003, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



Мне до таких рассуждений ещё далеко smile.gif smile.gif smile.gif
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2765 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.