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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
ovoshlook
3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77
27.03.2012, 09:31     Получение данных от одного класса в другом классе. #1
Здравствуйте уважаемые программисты. ситуация следующая:
Есть класс А. У этого класса есть 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?

Заранее спасибо за ответ.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2012, 09:31     Получение данных от одного класса в другом классе.
Посмотрите здесь:

Как использовать функцию класса в другом классе (ни один из классов не наследует другой)? C++
C++ Как объявить массив объектов одного класса в другом классе, а затем поместить в него объекты?
C++ Массив объектов класса в другом классе (композиция). Компилятор ругается на конструктор
C++ Использование метода из одного класса в другом
C++ Вызвать метод класса в другом классе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
27.03.2012, 09:32     Получение данных от одного класса в другом классе. #2
в функцию передать экземпляр класса A это же очевидно
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
panicwassano
590 / 558 / 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();
}
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&)
-=ЮрА=-
Заблокирован
Автор 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
Миниатюры
Получение данных от одного класса в другом классе.  
Yandex
Объявления
27.03.2012, 12:04     Получение данных от одного класса в другом классе.
Ответ Создать тему
Опции темы

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