С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/41: Рейтинг темы: голосов - 41, средняя оценка - 4.56
3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77

Получение данных от одного класса в другом классе.

27.03.2012, 09:31. Показов 8374. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые программисты. ситуация следующая:
Есть класс А. У этого класса есть public функция getVar(), которая возвращает значение private переменной Var.

При запуске программы создается экземпляр класса А. Вводится значение переменной Var. Затем создается класс B. Его экземпляр создается так же в классе A. Мне нужно получить для класса B переменную Var через функцию getVar(). то есть в классе B я описываю некую функцию , которая должна обращаться к созданному элементу класса A и вызывать функцию getVar():

C++
1
2
3
4
5
6
class B
public:
void someFunction() 
{
   someVar=A.getVar();
}
Вопрос вот в чем: Как мне из класса B увидеть уже созданный экземпляр класса A?

Заранее спасибо за ответ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2012, 09:31
Ответы с готовыми решениями:

Использование данных одного класса в другом классе
Подскажите как сделать так что бы значения d1,d2 из первого класса можно было использовать во втором классе? #include...

Вызов метода одного класса в другом классе
Привет всем Когда запускаю, то в методе GetOut() вместо имени человека выводится цифра 1 Помогите пожалуйста, заранее спасибо. ...

Указатель на функцию-член одного класса в другом классе - C++
Добрый вечер! Может кто-то может помочь с проблемой. class Cook { public: void _cook_dish(Dish cook_dish_id) { ... ...

5
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
27.03.2012, 09:32
в функцию передать экземпляр класса A это же очевидно
0
3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77
27.03.2012, 10:50  [ТС]
Спасибо. сразу не сообразил. Но теперь следующая проблема:

подкючил к хедеру класса B хедер класса A.

функию в хедере переделал на someFunction(А*)

в B.cpp

C++
1
2
3
4
5
6
class B
public:
void someFunction(A* a) 
{
   someVar=A.getVar();
}
Компилятор ругается на хедер о том что класс А не объявлен. Хотя в #include есть A.h
0
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
27.03.2012, 11:19
#include "A.h"
C++
1
2
3
4
5
6
class B
public:
void someFunction(const A& a) 
{
   someVar=A.getVar();
}
0
3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77
27.03.2012, 11:43  [ТС]
Благодарю. стоит добавить, что помимо этого нужно в хедере класса B нужно добавить:

C++
1
2
3
4
class A; //Вот это
class B
public:
void someFunction(const A&)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.03.2012, 12:04
Вот пример на 3-х классах СFruit использует в качестве внутренних переменных классы CApple и CBanan

apple.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef CAPPLE
#define CAPPLE
 
class CApple
{
private :
    double ves;
    int    rgb[3];
public:
    CApple()
    {
        ves = 0;
        rgb[0] = 255;
        rgb[1] = 0;
        rgb[2] = 0;
    }
    void SetColour(int red, int grn, int blu);
    void SetVes(double mas);
    int * GetColour();
    double GetVes();
};
 
void CApple::SetColour(int red, int grn, int blu)
{
        rgb[0] = red;
        rgb[1] = grn;
        rgb[2] = blu;
}
 
void CApple::SetVes(double mas)
{
    ves = mas;
}
 
int * CApple::GetColour()
{
    return rgb;
}
 
double CApple::GetVes()
{
    return ves;
}
 
#endif
banan.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef CBANAN
#define CBANAN
 
class CBanan
{
private :
    double ves;
    bool isBlack;
public:
    CBanan()
    {
        ves = 0;
        isBlack = false;
    }
    void SetType(bool bBlack);
    void SetVes(double mas);
    bool GetType();
    double GetVes();
};
 
void CBanan::SetType(bool bBlack)
{
    isBlack = bBlack;
}
 
void CBanan::SetVes(double mas)
{
    ves = mas;
}
 
bool CBanan::GetType()
{
    return isBlack;
}
 
double CBanan::GetVes()
{
    return ves;
}
 
#endif
fruit.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef CFRIUT
#define CFRIUT
#include "apple.h"
#include "banan.h"
#include <iostream>
using namespace std;
 
class CFruit
{
private :
    CApple _apple;
    CBanan _banan;
public:
    CFruit(){};
    void SetApple(CApple apple);
    void SetBanan(CBanan banan);
 
    void GetApple(CApple &apple);
    void GetBanan(CBanan &banan);
 
    void ShowApple();
    void ShowBanan();
};
 
void CFruit::SetApple(CApple apple)
{
    _apple = apple;
}
 
void CFruit::SetBanan(CBanan banan)
{
    _banan = banan;
}
 
void CFruit::GetApple(CApple &apple)
{
    apple = _apple;
}
 
void CFruit::GetBanan(CBanan &banan)
{
    banan = _banan;
}
 
void CFruit::ShowApple()
{
    int * col = _apple.GetColour();
    cout<<"Apple\n";
    cout<<"Ves    : "<<_apple.GetVes()<<endl;
    cout<<"Colour : "
        <<"RGB = {"
        <<col[0]<<" "<<col[1]<<" "<<col[2]
        <<"}\n";
}
 
void CFruit::ShowBanan()
{
    cout<<"Banan\n";
    cout<<"Ves    : "<<_banan.GetVes()<<endl;
    cout<<"Colour : "<<(_banan.GetType() ? "black" : "yellow")<<endl;
}
 
#endif
cpp основного модуля
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef CFRIUT
#define CFRIUT
#include "apple.h"
#include "banan.h"
#include <iostream>
using namespace std;
 
class CFruit
{
private :
    CApple _apple;
    CBanan _banan;
public:
    CFruit(){};
    void SetApple(CApple apple);
    void SetBanan(CBanan banan);
 
    void GetApple(CApple &apple);
    void GetBanan(CBanan &banan);
 
    void ShowApple();
    void ShowBanan();
};
 
void CFruit::SetApple(CApple apple)
{
    _apple = apple;
}
 
void CFruit::SetBanan(CBanan banan)
{
    _banan = banan;
}
 
void CFruit::GetApple(CApple &apple)
{
    apple = _apple;
}
 
void CFruit::GetBanan(CBanan &banan)
{
    banan = _banan;
}
 
void CFruit::ShowApple()
{
    int * col = _apple.GetColour();
    cout<<"Apple\n";
    cout<<"Ves    : "<<_apple.GetVes()<<endl;
    cout<<"Colour : "
        <<"RGB = {"
        <<col[0]<<" "<<col[1]<<" "<<col[2]
        <<"}\n";
}
 
void CFruit::ShowBanan()
{
    cout<<"Banan\n";
    cout<<"Ves    : "<<_banan.GetVes()<<endl;
    cout<<"Colour : "<<(_banan.GetType() ? "black" : "yellow")<<endl;
}
 
#endif
Миниатюры
Получение данных от одного класса в другом классе.  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2012, 12:04
Помогаю со студенческими работами здесь

Считать данные с одного класса и использовать их в другом классе
У меня есть два класса в программе - 1. Window Form со всеми контролс и переменными и 2. Асинхронный TCP. Сейчас в TCP можно написать...

Передача полей одного класса для редактирования в другом классе
Приятного времени суток. Есть такая задача: нужно передать поля одного класса для редактирования в другом классе (оба класса -...

Как вызвать стринг из одного класса чтобы он был виден в другом классе?
Доброго дня всем,у меня появился вопрос по классам. И так,у меня есть 2 класса ProcessClass.java и My30.java.В процессе ProcessClass.java...

Получение данных в переменной, которая содержится в другом классе
К примеру, мне требуется написать программу, что-то вроде обработчика введенных команд. Имеется класс Program.cs using System; using...

Как объявить массив объектов одного класса в другом классе, а затем поместить в него объекты?
Как объявить массив объектов одного класса в другом классе, а затем поместить в него объекты?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru