3 / 3 / 0
Регистрация: 22.05.2010
Сообщений: 77
1

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

27.03.2012, 09:31. Показов 5552. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2012, 09:31
Ответы с готовыми решениями:

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

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

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

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

5
599 / 567 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
27.03.2012, 09:32 2
в функцию передать экземпляр класса A это же очевидно
0
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
599 / 567 / 104
Регистрация: 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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2012, 12:04

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

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

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

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

Как вызвать метод из одного класса чтобы он был виден в другом классе?(Отсылка от старой темы)
Добрый вечер,Я почти разобрался только у меня последний вопрос Как исправить?Смотрите скрин. Надо...

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


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

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

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