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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
#1

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

28.03.2013, 18:02. Просмотров 487. Ответов 8
Метки нет (Все метки)

Мучаюсь полдня. Помогите. Суть такая. Есть два класса 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;
Помогите!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2013, 18:02     Доступ из одного класса в другой
Посмотрите здесь:

Представление полей одного класса через другой C++
C++ Добавление экземпляров одного класса в другой класс
C++ Передача значения параметра из одного класса в другой при разных хедерах
C++ Доступ одного класса к данным другого
Передача массива одного класса в другой С++ C++
C++ Преобразование из одного класса в другой
Доступ к членам одного класса с другого C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12671 / 7179 / 801
Регистрация: 27.09.2012
Сообщений: 17,707
Записей в блоге: 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
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++
Не работает передача объекта из одного класса в другой через return C++
C++ не удается передать объект из одного класса в другой посредством return

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

Или воспользуйтесь поиском по форуму:
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     Доступ из одного класса в другой
Ответ Создать тему
Опции темы

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