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

Не знаю, как обратиться к объектам-родителям, когда создан только дочерний?

27.04.2020, 14:13. Показов 3570. Ответов 4

Author24 — интернет-сервис помощи студентам
Добрый день всем, в учебной задаче нужно создать 4 класса, которые последовательно наследуют друг друга, но в основной программе объект создаётся только для последнего класса. Нужно как-то обратиться к объектам-родителям и вызвать метод get_values() для них. Не понимаю, как к ним можно обратиться, подскажите пожалуйста. Код и постановка задачи ниже.

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include "cl_1.h"
#include "cl_2.h"
#include "cl_3.h"
#include "cl_4.h"
 
using namespace std;
 
int main()
{
    string name;
    int value;
    cin >> name >> value;
    cl_4 ob_4(name, value);
    ob_4.get_values();
    return(0);
}
cl_1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef CL_1_H
#define CL_1_H
#include <string>
 
using namespace std;
 
class cl_1
{
protected:
    string m_name;
    int m_value;
public:
    cl_1(string name, int value);
    void get_values();
};
 
#endif
cl_1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "cl_1.h"
#include <string>
#include <iostream>
 
using namespace std;
 
cl_1::cl_1(string name, int value)
{
    m_name = name + "_1";
    m_value = value;
}
 
void cl_1::get_values()
{
    cout << m_name << "     " << m_value;
}
cl_2.h
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef CL_2_H
#define CL_2_H
#include "cl_1.h"
    
class cl_2 : public cl_1
{
public:
    cl_2(string name, int value);
};
 
#endif
cl_2.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "cl_2.h"
#include <string>
#include <iostream>
 
using namespace std;
 
cl_2::cl_2(string name, int value)
    :cl_1(name, value)
{
    m_name = name + "_2";
    m_value = value * value;
}
cl_3.h
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef CL_3_H
#define CL_3_H
#include "cl_2.h"
    
class cl_3 : public cl_2
{
public:
    cl_3(string name, int value);
};
 
#endif
cl_3.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "cl_3.h"
#include <string>
#include <iostream>
 
using namespace std;
 
cl_3::cl_3(string name, int value)
    :cl_2(name, value)
{
    m_name = name + "_3";
    m_value = value * value * value;
}
cl_4.h
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef CL_4_H
#define CL_4_H
#include "cl_3.h"
    
class cl_4 : public cl_3
{
public:
    cl_4(string name, int value);
};
 
#endif
cl_4.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "cl_4.h"
#include <string>
#include <iostream>
 
using namespace std;
 
cl_4::cl_4(string name, int value)
    :cl_3(name, value)
{
    m_name = name + "_4";
    m_value = value * value * value * value;
}
Постановка задачи:
Кликните здесь для просмотра всего текста

Иерархия наследования


Описать четыре класса которые последовательно наследуют друг друга, последовательными номерами классов 1,2,3,4. Реализовать программу, в которой использовать единственный указатель на объект базового класса (номер класса 1). Наследственность реализовать так, что можно было вызвать методы, принадлежащие объекту конкретного класса, только через объект данного класса.


В закрытом разделе каждого класса определены два свойства: строкового типа для наименования объекта и целого типа для значения определенного целочисленного выражения.


Описание каждого класса содержит один параметризированный конструктор с строковым и целочисленным параметром. В реализации каждого конструктора объекта определяются значения защищенных свойств:


- наименование объекта по шаблону: «значение строкового параметра»_«номер класса»;


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


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


В основной функции реализовать алгоритм:


1. Вводиться идентификатор и натуральное число от 2 до 10.


2. Создать объект класса 4, используя параметризированный конструктор, которому в качестве аргументов передаются введенный идентификатор и натуральное число.


3. Построчно, для всех объектов согласно наследственности, от объекта базового (класс 1) до производного объекта (класса 4) вывести наименование объекта класса и значение целочисленного свойства.

Входные данные

Первая строка:
идентификатор натуральное число
Выходные данные

Построчно (четыре строки):
идентификатор_номер класса значение целочисленного свойства
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2020, 14:13
Ответы с готовыми решениями:

Как обратиться к свойствам объектам
нужно сделать у кнопки на форме enabled в false , не могу найти как это сделать внутри программы ,...

Как обратиться из кода к объектам окна?
Прошу не переносить в тему WPF. Вопрос несколько шире и кроме того - уместнее в теме для новичков...

Как обратиться к объектам на форме по их имени?
Доброго времени суток! У меня такая ситуация: в txt файле записаны через пробел имена текст боксов...

Как обратиться к объектам ASP из серверного объекта?
Есть ASP страница, вызывающая серверный объект. Как из этого объекта (VB) обратиться к объектам,...

4
7790 / 6557 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
27.04.2020, 14:26 2

Не по теме:

Наследственность? Это учитель биологии подменял учителя информатики?


Ты функцию сначала реализуй во всех классах.
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 9
27.04.2020, 14:30  [ТС] 3
А она разве не наследуется?
0
7790 / 6557 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
27.04.2020, 17:21 4
У тебя в задании так сказано. Читай внимательно.
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 9
27.04.2020, 17:30  [ТС] 5
А после реализации, что делать, как их вызвать в мэйне?
0
27.04.2020, 17:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2020, 17:30
Помогаю со студенческими работами здесь

Как обозначить дату если я знаю только месяц и год, а число не знаю
чтобы был формат ячейки дата например xx.10.2016 дату я не знаю! Добавлено через 2 минуты...

Не знаю как обратиться к переменной
есть такой код class a{ public int q; }; class b{ public a r; }; int main(){ b test;

Можно ли обратиться к внедренным excel объектам графиков в MS PowerPoint?
Есть ли возможность на vba из эксель обновить в файлах pptx внедренные в графики эксель таблицы?...

Как получить дочерний элемент DIV'а, зная только его id?
Есть . Внутри него с неизвестным уровнем вложенности находится текстовое поле с определенным id....

Проверка когда был создан фаил
Доброго времени суток, подскажите как правильно добавить =&gt; '...

Дерево значений: назначить всем родителям параметр "только чтение"
Доброго времени суток. Нужна ваша помощь. Имеется дерево значений, табличная часть которого...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru