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

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

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

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

28.03.2013, 18:02. Просмотров 496. Ответов 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++
Привет, есть два класса RUSmoney и USmoney. Там я сделал конвертирование из RUSmoney в USmoney и наоборот (строки 41 и 75) Вот код: ...

Классы С++, получить доступ из одного класса к элементам другого - C++
Здравствуйте! Объясните пожалуйста, вот имеется у меня два класса,например вот такие: Class A { private: int i; }

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

Представление полей одного класса через другой - C++
Задача следующего сожержания: Как реализовать поля класса bull через класс Time? Предварительный код: #include...

Добавление экземпляров одного класса в другой класс - C++
Доброе утро! В программе создано 2 класса. 1-й предназначен для создания объекта под названием "студент". Он имеет различные свойства (фио,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 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++
Есть такая проблема. Пишу игру с другом. Код выкладывать не буду потому что он большой :cry: Никто даже не захочет его смотреть, просто...

не удается передать объект из одного класса в другой посредством return - C++
есть класс Reading,в котором находится два объекта типа string :text и line,их я передаю с помощью двух аналогичных методов std::string...

Програма в которой объекты одного класса вложены в другой класс - C++
приведите пример програмы c++, где объекты одного класса вложенные в другой класс. Для чего это нужно

Не работает передача объекта из одного класса в другой через return - C++
Есть 2 объекта класс Reading ,text и line,которые посредством методов std::string outstr() std::string outch() соответственно должны...


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

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

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