Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
13:04:2008, 20:52
|
|
Новенький ![]() Группа: Программист Сообщений: 27 Регистрация: 18:03:2007 Пользователь №: 9 772 Репутация: 0
|
Помогите разобраться с ошибками..
(Создаю на CLR) в файле cursorEx.h: Код #pragma once #include "stdafx.h" #include "form1.h" namespace CursorEx{ public ref class RenderCur { public: RenderCur(); ~RenderCur(); } private: Bitmap^ cursorImage; } файл cursorEx.cpp: Код #include "stdafx.h" #include "cursorEx.h" using namespace CursorEx; RenderCur::RenderCur() { } RenderCur::~RenderCur() { } Все бы ничего, если бы мне не хотелось создать этот класс в файле form1.h: Код public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); CursorEx::RenderCur ^ c1; CursorEx::RenderCur ^ c2 = gcnew CursorEx::RenderCursor; } ... ни одна из строчек не работает... ни в каком месте не могу создать экземпляр класса.. error C2653: 'CursorEx' : is not a class or namespace name error C2065: 'RenderCur' : undeclared identifier error C2065: 'c' : undeclared identifier Подскажите, что я не так делаю! Как можно создать экземпляр класса? Сообщение отредактировал IY@KOV - 13:04:2008, 20:54 |
|
Сообщение
#1
|
|
![]() |
|
|
14:04:2008, 05:07
|
|
Гуру ![]() ![]() ![]() Группа: Достойный программист Сообщений: 315 Регистрация: 3:11:2007 Пользователь №: 13 517 Репутация: 1
|
напиши using и в form1.h
|
|
Сообщение
#2
|
|
|
|
14:04:2008, 05:11
|
|
Новенький ![]() Группа: Программист Сообщений: 27 Регистрация: 18:03:2007 Пользователь №: 9 772 Репутация: 0
|
Код #pragma once #include "cursorEx.h" namespace MyProgam{ using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace System::Threading; using namespace CursorEx;//Ошибка C2871 /// <summary/> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); CursorEx::RenderCur ^ c; пробовал, но не находит namespace: error C2871: 'CursorEx' : a namespace with this name does not exist Сообщение отредактировал IY@KOV - 14:04:2008, 06:00 |
|
Сообщение
#3
|
|
|
|
14:04:2008, 05:15
|
|
Гуру ![]() ![]() ![]() Группа: Достойный программист Сообщений: 315 Регистрация: 3:11:2007 Пользователь №: 13 517 Репутация: 1
|
попробуй убрать включение form1.h в cursorEx.h
|
|
Сообщение
#4
|
|
|
|
14:04:2008, 05:24
|
|
Новенький ![]() Группа: Программист Сообщений: 27 Регистрация: 18:03:2007 Пользователь №: 9 772 Репутация: 0
|
Большое спасибо!
А почему так надо делать? Почему так работает? 8) Сообщение отредактировал IY@KOV - 14:04:2008, 05:27 |
|
Сообщение
#5
|
|
|
|
14:04:2008, 05:33
|
|
Гуру ![]() ![]() ![]() Группа: Достойный программист Сообщений: 315 Регистрация: 3:11:2007 Пользователь №: 13 517 Репутация: 1
|
потому что form1.h добавляется в cursorEx.h когда в form1.h еще нет cursorEx.h. и добавляется он до объявления пространства имен. потом компилятор проходится по коду и видит класс который раньше нигде не встречался.
|
|
Сообщение
#6
|
|
|
|
14:04:2008, 05:46
|
|
Новенький ![]() Группа: Программист Сообщений: 27 Регистрация: 18:03:2007 Пользователь №: 9 772 Репутация: 0
|
А как мне тогда передать в CursorEx.h параметр типа MyProgram::Form1^ или любого другого который описан в неймспейсе MyProgram?
Сообщение отредактировал IY@KOV - 14:04:2008, 05:56 |
|
Сообщение
#7
|
|
|
|
5:05:2008, 14:38
|
|
Новенький ![]() Группа: Программист Сообщений: 12 Регистрация: 5:05:2008 Пользователь №: 17 076 Репутация: 0
|
Делай так:
в *.h файле Код namespace CursorEx{ ref class MyProgram::Form1; // Forward declaration public ref class RenderCur { public: RenderCur(MyProgram::Form1^ form); ~RenderCur(); } private: Bitmap^ cursorImage; } и потом в RenderCur.сpp файле пишешь #include "form1.h" Сообщение отредактировал alexsid - 5:05:2008, 14:39 |
|
Сообщение
#8
|
|
![]() |
|
Текстовая версия | Сейчас: 20:07:2008 - 22:48 |