Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> (ошибки С2653 и С2065) про создание классов и Namespaces, public ref class...
IY@KOV
Вставить ник
сообщение 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
 
Новая тема 
Ответов (1 - 7)
gamecreator
Вставить ник
сообщение 14:04:2008, 05:07
Цитата Ответить 


Гуру
***

Группа: Достойный программист
Сообщений: 315
Регистрация: 3:11:2007
Пользователь №: 13 517



Репутация: - 1 +


напиши using и в form1.h
Подняться вверх 
 
Сообщение #2
IY@KOV
Вставить ник
сообщение 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
gamecreator
Вставить ник
сообщение 14:04:2008, 05:15
Цитата Ответить 


Гуру
***

Группа: Достойный программист
Сообщений: 315
Регистрация: 3:11:2007
Пользователь №: 13 517



Репутация: - 1 +


попробуй убрать включение form1.h в cursorEx.h
Подняться вверх 
 
Сообщение #4
IY@KOV
Вставить ник
сообщение 14:04:2008, 05:24
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 27
Регистрация: 18:03:2007
Пользователь №: 9 772



Репутация: - 0 +


Большое спасибо!
А почему так надо делать?
Почему так работает? 8)

Сообщение отредактировал IY@KOV - 14:04:2008, 05:27
Подняться вверх 
 
Сообщение #5
gamecreator
Вставить ник
сообщение 14:04:2008, 05:33
Цитата Ответить 


Гуру
***

Группа: Достойный программист
Сообщений: 315
Регистрация: 3:11:2007
Пользователь №: 13 517



Репутация: - 1 +


потому что form1.h добавляется в cursorEx.h когда в form1.h еще нет cursorEx.h. и добавляется он до объявления пространства имен. потом компилятор проходится по коду и видит класс который раньше нигде не встречался.
Подняться вверх 
 
Сообщение #6
IY@KOV
Вставить ник
сообщение 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
alexsid
Вставить ник
сообщение 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


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 20:07:2008 - 22:48
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net