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

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

12.10.2019, 19:21. Показов 2732. Ответов 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)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2019, 19:21
Ответы с готовыми решениями:

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

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

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

5
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
12.10.2019, 19:41
Лучший ответ Сообщение было отмечено 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
3 / 3 / 0
Регистрация: 07.10.2018
Сообщений: 59
12.10.2019, 19:52  [ТС]
Спасибо большое!
0
фрилансер
 Аватар для Алексей1153
6466 / 5680 / 1131
Регистрация: 11.10.2019
Сообщений: 15,127
12.10.2019, 20:11
и вариант без шаблонов

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
3 / 3 / 0
Регистрация: 07.10.2018
Сообщений: 59
13.10.2019, 20:18  [ТС]
Цитата Сообщение от 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);
Ошибка:
Code
1
invalid use of template-name 'UP' without an argument list
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
13.10.2019, 20:20
Цитата Сообщение от Dragon_game Посмотреть сообщение
Как создать объект класса?
При таком варианте компилятор выдает ошибку:
C++
C++
1
2
Up<CLASS1>  UP_A(A);
Up<CLASS2>  UP_B(B);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.10.2019, 20:20
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru