Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 07.10.2018
Сообщений: 39
1

Вызов метода класса из другого класса

12.10.2019, 19:21. Просмотров 1691. Ответов 5
Метки нет (Все метки)


Есть два класса "нижнего уровня" и один "верхнего уровня"
Классы "нижнего уровня" имеют методы с одинаковыми названиями
Класс "верхнего уровня" должен вызывать методы класса "нижнего уровня" по заданному объекту класса
Как это сделать?

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
64
65
66
67
68
class CLASS1  //класс нижнего уровня
{
    public:
    
    void X1(int F)
   {
     //какие-то действия 
   }
 
   void X2(int F)
   {
     //какие-то действия 
   }
 
};
 
 
class  CLASS2   //класс нижнего уровня
{
    public:
    
    void X1(int F)
   {
     //какие-то действия 
   }
 
   void X2(int F)
   {
     //какие-то действия 
   }
 
};
 
class Up //класс верхнего уровня
{
  Up(obj) //сюда мы должны положить объект класса с которым работаем
  {
  }
 
  void X(int F)
  {
    //какие-то действия
 
    //вызываем метод X1 класса по объекту obj
 
    //какие-то действия
 
    //вызываем метод X2 класса по объекту obj
 
  }
};
 
 
 
int main()
{
   CLASS1 A;
   CLASS2 B;
 
   UP UP_A(&A); //кладем объект класса
   UP UP_B(&B);
 
   //работаем с объектами UP_A , UP_B
 
  
 
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2019, 19:21
Ответы с готовыми решениями:

Вызов класса
есть созданный класс class TRect:public TObject { private: int a,b; public: __fastcall...

callback метода класса
Предыстория: нужно последовательно запускать несколько однотипных циклов большой степени...

Вызов деструкторов членов класса
у меня есть класс поля которого тоже классы...при выходе из конструктора вызывается деструктор для...

Запуск метода класса в новом потоке
Здравствуйте, у меня есть класс, в нём функция - необходимо вызвать эту функцию в нескольких...

5
6385 / 4288 / 1733
Регистрация: 07.05.2019
Сообщений: 13,106
Записей в блоге: 1
12.10.2019, 19:41 2
Лучший ответ Сообщение было отмечено Dragon_game как решение

Решение

Цитата Сообщение от Dragon_game Посмотреть сообщение
Как это сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
template <typename T>
class Up //класс верхнего уровня
{
  Up(T &obj) //сюда мы должны положить объект класса с которым работаем
  : m_obj(obj)  
{
  }
 
  void X(int F)
  {
    //какие-то действия
 
    //вызываем метод X1 класса по объекту obj
    obj.X1();
 
    //какие-то действия
 
    //вызываем метод X2 класса по объекту obj
    obj.X2();
  }
  T &m_obj;
};
1
1 / 1 / 0
Регистрация: 07.10.2018
Сообщений: 39
12.10.2019, 19:52  [ТС] 3
Спасибо большое!
0
фрилансер
2024 / 1565 / 385
Регистрация: 11.10.2019
Сообщений: 4,576
12.10.2019, 20:11 4
и вариант без шаблонов

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class CLASS_parent
{
public:
    virtual void X1(int F)=0;
    virtual void X2(int F)=0;
 
    virtual ~CLASS_parent()
    {
    }
};
 
class CLASS_A:public CLASS_parent
{
public:
 
    void X1(int F)override
    {
        //какие-то действия
    }
 
    void X2(int F)override
    {
        //какие-то действия
    }
};
 
class  CLASS_B:public CLASS_parent
{
public:
 
    void X1(int F)override
    {
        //какие-то действия
    }
 
    void X2(int F)override
    {
        //какие-то действия
    }
};
 
class CUp //класс верхнего уровня
{
    CLASS_parent* obj{0};
 
public:
    CUp(CLASS_parent* obj):obj(obj) //объект класса, с которым работаем
    {
    }
 
    void X(int F)
    {
        //какие-то действия
 
        //вызываем метод X1 класса по объекту obj
        obj->X1(1);
 
        //какие-то действия
 
        //вызываем метод X2 класса по объекту obj
        obj->X2(2);
 
    }
};
 
int main()
{
    CLASS_A A;
    CLASS_B B;
 
    CUp UP_A(&A);
    CUp UP_B(&B);
 
    //работаем с объектами UP_A , UP_B
    UP_A.X(3);
    UP_B.X(3);
}
1
1 / 1 / 0
Регистрация: 07.10.2018
Сообщений: 39
13.10.2019, 20:18  [ТС] 5
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
template <typename T>
class Up //класс верхнего уровня
{
* Up(T &obj) //сюда мы должны положить объект класса с которым работаем
* : m_obj(obj) *
{
* }
void X(int F)
* {
* * //какие-то действия
//вызываем метод X1 класса по объекту obj
* * obj.X1();
//какие-то действия
//вызываем метод X2 класса по объекту obj
* * obj.X2();
* }
* T &m_obj;
};

Как создать объект класса?

При таком варианте компилятор выдает ошибку:
C++
1
Up  UP_A(&A);
Ошибка:
Код
invalid use of template-name 'UP' without an argument list
0
6385 / 4288 / 1733
Регистрация: 07.05.2019
Сообщений: 13,106
Записей в блоге: 1
13.10.2019, 20:20 6
Цитата Сообщение от Dragon_game Посмотреть сообщение
Как создать объект класса?
При таком варианте компилятор выдает ошибку:
C++
C++
1
2
Up<CLASS1>  UP_A(A);
Up<CLASS2>  UP_B(B);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2019, 20:20

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Какой выдается массив из метода класса?
Здравствуйте. Дали в работу код: //vspomogatelnaya funkciya, sozdaet massiv i zapolnyaet ego 0...

Явная специализация метода для типа шаблонного класса
Добрый вечер, уважаемые знатоки! :) Хочу задать вопрос по созданию шаблонов. В общем, пусть у меня...

Вызов статического метода абстрактного класса
возможно ли вызвать статический метод из абстрактного класса? это делается только с помощью...

Можно ли объявлять в описании одного класса объекты другого класса
Здравствуйте! Помогите, пожалуйста, разобраться: я описал класс SignalZakon, а теперь хочу создать...


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

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

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