Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
1

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

28.03.2013, 18:02. Показов 1046. Ответов 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;
Помогите!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2013, 18:02
Ответы с готовыми решениями:

Получить доступ с одного класса к элементу второго класса
Добрый вечер, я сейчас работаю с XNA Game Studio 4.0, каркас программы аналогичен .Net , пишу свою...

Передать данные одного обьекта класса в другой обьект на другой форме
Здравствуйте прочитал вот это https://www.cyberforum.ru/windows-forms/thread110436.html но так и...

Есть два класса. Как из одного класса перенести данные в другой класс?
Есть два класса : планета и диспетчер планет. Диспетчер имеет информацию о планетах: их названия,...

Как передать входящее значение одного метода класса на возврат в другой метод того же класса?
Я самый новейший новичок. Помогите.Как передать входящее значение (количество еды) метода feed...

8
Don't worry, be happy
17164 / 10048 / 1934
Регистрация: 27.09.2012
Сообщений: 25,035
Записей в блоге: 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);
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
28.03.2013, 18:26  [ТС] 3
Но у меня переменная temp создается в классе PictureForm . Когда я из класса LevelForm вызываю функцию ConstructPicture(она находится в классе PictureForm ) и пытаюсь в ней использовать эту переменную(Она определена в PictureForm.h ) , то выдает значение 0.
0
13 / 13 / 6
Регистрация: 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);
}
0
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);
}
А как тогда эту функцию вызвать.
0
1 / 1 / 2
Регистрация: 13.01.2013
Сообщений: 71
28.03.2013, 20:29 6
а сделать дружественный клас или функцию?
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
28.03.2013, 21:29  [ТС] 7
как вариант, но я не совсем понимаю, как это сделать. Я в двух классах объявил дружественную функцию(например x). Как теперь с помощью этой функции изменить из класса A значение класса B
0
1 / 1 / 2
Регистрация: 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}
};
вроде должно
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
28.03.2013, 22:39  [ТС] 9
ща пробну..
Хех, объясню проблему конкретнее: Есть две формы. Мне надо,(например) чтобы при нажатии на кнопку на форме 1 изменялся фон на форме2. На формах при инициализации устанавливаю фон.
Тоесть класс Forma1 и Forma2; Можно сделать так. Forma2 t; t.Set..Bitmap(...);Все идет,т.е добавить новое могу, а удалить то, чтобы создании при инициализации не могу.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2013, 22:39

Доступ одного класса к данным другого
Здравствуйте. Интересует следующий вопрос: Есть два класса, "Вектор" и "Матрица". Их реализации...

Доступ к членам одного класса с другого
Есть три файла: A.cpp: #include "B.cpp" class AA { int A; public: AA(int a) { A = a;

Не получается получить доступ из одного VLAN в другой
У меня не получается получить доступ из одного VLAN в другой. Из 10 в 20-ый и наоборот. Подскажите...

Как из одного класса получить доступ к другому
Нужна подсказка новичку. Начал изучить C#. Тренируюсь в Visual Studio 2008. Создал два файла *.cs...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.