Форум программистов, компьютерный форум CyberForum.ru

Доступ из одного класса в другой - C++

Восстановить пароль Регистрация
 
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
28.03.2013, 18:02     Доступ из одного класса в другой #1
Мучаюсь полдня. Помогите. Суть такая. Есть два класса PictureForm и LevelForm. Как из класса LevelForm вызвать функцию класса PictureForm так, чтобы в этой функции я мог использовать переменный класса PictureForm. Точнее использовать то я могу, но их значения обнуляются.
В классе PictureForm инициализирую переменную (в PictureForm.h она объявлена : int temp; )
C++
1
temp = 100;
И как теперь её использовать в функции из другого класса? Пробовал так:
1) вызываю функцию ConstructPicture класса PictureForm:
C++
1
2
PictureForm test;
test.ConstructPicture();
2)Теперь в этой функции пытаюсь вывести значение переменной temp:
C++
1
2
3
4
void PictureForm::ConstructPicture()
{
AppLogDebug("Invoked with value: %d", temp);
}
Выводится 0;
Помогите!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11824 / 6803 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
28.03.2013, 18:06     Доступ из одного класса в другой #2
C++
1
2
3
4
5
6
7
8
void PictureForm::ConstructPicture(const LevelForm & temp)
{
AppLogDebug("Invoked with value: %d", temp);
}
//...
LevelForm temp = 100;
PictureForm test;
test.ConstructPicture(temp);
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
28.03.2013, 18:26  [ТС]     Доступ из одного класса в другой #3
Но у меня переменная temp создается в классе PictureForm . Когда я из класса LevelForm вызываю функцию ConstructPicture(она находится в классе PictureForm ) и пытаюсь в ней использовать эту переменную(Она определена в PictureForm.h ) , то выдает значение 0.
tadom
 Аватар для tadom
13 / 13 / 0
Регистрация: 28.03.2013
Сообщений: 22
28.03.2013, 18:39     Доступ из одного класса в другой #4
Если нужно обратится к переменной напрямую то ее нужно обявить как:
C++
1
public: int tmp;
Тогда с метода другого класа можно сделать так:
C++
1
2
3
4
void PictureForm::ConstructPicture(const LevelForm & someObj)
{
AppLogDebug("Invoked with value: %d", someObj.temp);
}
Можно также сделать статическую переменную:
C++
1
public: static int temp = 10;
Тогда код метода будет виглядеть так:
C++
1
2
3
4
void PictureForm::ConstructPicture()
{
AppLogDebug("Invoked with value: %d", LevelForm::temp);
}
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
28.03.2013, 18:49  [ТС]     Доступ из одного класса в другой #5
C++
1
2
3
4
void PictureForm::ConstructPicture(const LevelForm & someObj)
{
AppLogDebug("Invoked with value: %d", someObj.temp);
}
А как тогда эту функцию вызвать.
rizr
1 / 1 / 0
Регистрация: 13.01.2013
Сообщений: 71
28.03.2013, 20:29     Доступ из одного класса в другой #6
а сделать дружественный клас или функцию?
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
28.03.2013, 21:29  [ТС]     Доступ из одного класса в другой #7
как вариант, но я не совсем понимаю, как это сделать. Я в двух классах объявил дружественную функцию(например x). Как теперь с помощью этой функции изменить из класса A значение класса B
rizr
1 / 1 / 0
Регистрация: 13.01.2013
Сообщений: 71
28.03.2013, 22:37     Доступ из одного класса в другой #8
C++
1
2
3
4
friend int x(PictureForm &o)
{
return o.temp;
}
Добавлено через 12 минут
как дружественный классс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class PictureForm
{
//...
friend class LevelForm;
//...
};
 
class LevelForm
{
public:
int func(PictureForm & o)
{return o.temp}
};
вроде должно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 22:39     Доступ из одного класса в другой
Еще ссылки по теме:

Передача свойства одного экземпляра класса другому экземпляру класса C++
Передача массива одного класса в другой С++ C++
Как получить доступ к методам класса, который содержится в векторе класса C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
28.03.2013, 22:39  [ТС]     Доступ из одного класса в другой #9
ща пробну..
Хех, объясню проблему конкретнее: Есть две формы. Мне надо,(например) чтобы при нажатии на кнопку на форме 1 изменялся фон на форме2. На формах при инициализации устанавливаю фон.
Тоесть класс Forma1 и Forma2; Можно сделать так. Forma2 t; t.Set..Bitmap(...);Все идет,т.е добавить новое могу, а удалить то, чтобы создании при инициализации не могу.
Yandex
Объявления
28.03.2013, 22:39     Доступ из одного класса в другой
Ответ Создать тему
Опции темы

Текущее время: 13:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru