Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2011, 21:31   #1
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию Передача указателя на объект

Добрый день, как правильно нужно передавать указатель на объект, т.е. к примеру я хочу подключить объект на одной форме, а потом использовать этот объект на других формах через первую) спасибо заранее)
CodeNOT вне форума Ответить с цитированием
Старый 06.01.2011, 11:47   #2
blackbanny
Форумчанин
 
Аватар для blackbanny
 
Регистрация: 02.10.2009
Сообщений: 104
По умолчанию

например указатель на массив так передается:

вот как выглядит функция, которая принисает:
Код:
int My_Func(int *c)
{
return c[1];
}
здесь передаем:
Код:
int main()
{
int *array = new int[size];
array[1] = -1;
My_Func(array);

return 0;
}

Последний раз редактировалось blackbanny; 06.01.2011 в 12:32.
blackbanny вне форума Ответить с цитированием
Старый 06.01.2011, 16:14   #3
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Вот смотри например, у меня имеется отдельный cpp файл, в котором например описаны несколько классов. Потом я создаю новый проект, и не сколько форм, подключаю на первой форме мой срр файл, и вызываю методы объекта указатель на который создал, например вот так CBird *bird=new CBird();
а потом мне на второй форме нужно использовать тот же самый CBird но уже другие методы его, дак как мне с первой формы передать указатель на объект на вторую, чтоб не возникали ошибки записи не в тот адрес,либо записи в тот адрес, который предназначен для чтения! Заранее спасибо!
CodeNOT вне форума Ответить с цитированием
Старый 06.01.2011, 16:28   #4
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

Чето я вобще ниче не понял.
Если тебе нужно юзать классы из твоего .cpp то ты его разделяешь на реализацию методов классов (в самом .cpp) и объявление самого класса с прототипами методов в нем в .h файле. далее этот файл подключаешь куда надо и либо там где его юзаешь у тебя в томже проекте должен компилироватся этот .cpp либо линкер должен прилинковать .lib от этого .cpp
UltimaBeaR вне форума Ответить с цитированием
Старый 06.01.2011, 17:03   #5
pacniwassano
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 81
По умолчанию

Код:
CBird *bird=new CBird();
ты создаешь объект класса CBird в форме 1, создай его просто на 2 формы или глобальным
pacniwassano вне форума Ответить с цитированием
Старый 06.01.2011, 17:56   #6
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

pacniwassano смотри что я делал, я подключал в Unit1.cpp свой модуль например его назову modul.cpp потом в этом Unit1.cpp создавал указатель на объект т.е. например:CBird *bird=new CBird();
Потом я создавал вторую форму, на ней делал следующее #include "Unit1.cpp"
и пытаюсь вызвать метод объекта CBird но у меня выскакивает ошибка следующего содержания: Project Project1.exe raised exception class EAccessViolation with mewssage 'Access violation at address 0040955B in module 'Project1.exe'.Write of address 00000024'.Process stopped.Use Step or Run to continue.

А вот как ее избежать я не знаю(
CodeNOT вне форума Ответить с цитированием
Старый 06.01.2011, 19:32   #7
Flyasd1
Пользователь
 
Регистрация: 06.01.2011
Сообщений: 11
По умолчанию

Не совсем понимаю суть вашей проблемы. Вы можете создать .h файл котором объявите переменную к примеру CBird *g_bird. Далее вы подключаете это файл к вашему Unit1.cpp и в нем инициализируете переменную, к примеру g_bird=new CBird();
Потом в вашей 2 форме вы подключаете этот же h файл и используете єту переменную g_bird->...
Главное что бы инициализация переменной была до ее использования.
Flyasd1 вне форума Ответить с цитированием
Старый 06.01.2011, 20:01   #8
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Flyasd1 Спасибо, кажется вы раскрыли мне глаза на проблему)
CodeNOT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача указателя на процедуру из другого модуля Alex Cones Общие вопросы Delphi 0 27.06.2010 15:21
Передача указателя по цепочке (Си) mutabor Общие вопросы C/C++ 3 29.05.2010 16:29
Передача указателя из Си++ в dll на delphi VladimirFF Общие вопросы C/C++ 0 22.02.2010 19:56
Передача указателя на массив в функцию loser Общие вопросы C/C++ 2 19.02.2010 19:41
передача указателя в функцию arturka Помощь студентам 3 06.07.2008 00:25