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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
ovoshlook
3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77
#1

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

27.03.2012, 09:31. Просмотров 1450. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2012, 09:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получение данных от одного класса в другом классе. (C++):

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

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

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

Объект класса в другом классе - C++
Здравствуйте! Недавно начал учить классы, прошу помогите мне. Мой написанный код не работает. Можете сказать, что с ним не так? ...

Создание класса в другом классе - C++
Приветствую всех. Уважаемые гуру, скажите можно ли создавать класс в теле друго класса? Причем создание "внутреннего" класса идет на...

Вызвать метод класса в другом классе - C++
Подскажите как мне вызвать метод класса в другом классе ?

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

подкючил к хедеру класса 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
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
27.03.2012, 11:19 #4
#include "A.h"
C++
1
2
3
4
5
6
class B
public:
void someFunction(const A& a) 
{
   someVar=A.getVar();
}
0
ovoshlook
3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77
27.03.2012, 11:43  [ТС] #5
Благодарю. стоит добавить, что помимо этого нужно в хедере класса B нужно добавить:

C++
1
2
3
4
class A; //Вот это
class B
public:
void someFunction(const A&)
0
-=ЮрА=-
Заблокирован
Автор FAQ
27.03.2012, 12:04 #6
Вот пример на 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
Миниатюры
Получение данных от одного класса в другом классе.  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2012, 12:04
Привет! Вот еще темы с ответами:

Массив элементов класса в другом классе - C++
Есть класс &quot;студент&quot; и &quot;группа&quot;. В группе есть массив студентов. Как из main использовать методы класса студент, через класс группа?...

Использование объектов класса в другом классе - C++
Пусть имеются 2 класса Snake и Food, а также 2 их объекта snake и food соответственно. food должен в одном из его методов работать со...

Вызвать конструктор произвольного класса в другом классе - C++
Здравствуйте! Есть необходимость вызвать конструктор какого-либо класса в методе другого класса. Примерно так: class A{}; class B:...

Классы: определение идентификатора класса, в другом классе - C++
Доброго времени суток:) Проблема в не знании, как идентифицировать переменную, использовавшаяся в другом классе. // 1 IntelliSense:...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.03.2012, 12:04
Ответ Создать тему
Опции темы

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