Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 29.04.2021
Сообщений: 19

Как передать записанные значение базового класса в дочерний класс

15.11.2021, 20:17. Показов 2618. Ответов 50

Студворк — интернет-сервис помощи студентам
Проблема заключается в том, что я не понимаю, как передать значения базового класса в дочерний. Нужно передать значение a, базового класса в дочерний, чтоб в последствии посчитать периметр.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 rectangle.h
#pragma once
 
class rectangle
{
protected:
    float a, b;
public:
    rectangle(void);
    ~rectangle(void);
    rectangle(float, float);
    float PerimRect() {
        return 2.0 * (a + b);
    }
    void input();
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 rectangle.cpp
#include "rectangle.h"
#include <iostream>
#include <math.h>
 
using namespace std;
 
rectangle::rectangle(void) : a(0), b(0) {}
 
rectangle::rectangle(float A, float B) : a(A), b(B) {}
 
rectangle::~rectangle(void) {}
 
void rectangle::input() {
    cout << "Input a side - > ";
    cin >> a;
    cout << "Input b side - > ";
    cin >> b;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 square.h
#pragma once
#include "rectangle.h"
 
class square :
    public rectangle
{
public:
    square(void);
    ~square(void);
    float PerimSqr() {
        return 4.0 * a;
    }
};
C++
1
2
3
4
5
6
7
8
9
 square.cpp
#include "square.h"
#include <iostream>
 
using namespace std;
 
square::square() : rectangle(a, b) {}
 
square::~square(void) {}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 reshenie.cpp
#include "rectangle.h"
#include "square.h"
#include <iostream>
 
using namespace std;
 
int main() {
    rectangle reshenobj;
    square reshobj;
    reshenobj.input();
    //reshobj.input();
    cout << "Perimeter of Rectangle - > " << reshenobj.PerimRect() << endl;
    cout << "Perimeter of Square - > " << reshobj.PerimSqr() << endl;
    if (reshenobj.PerimRect() > reshobj.PerimSqr()) {
        cout << "Perimeter of Rectangle more bigger than Square";
    }
    else {
        cout << "Perimeter of Square more bigger than Rectangle";
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2021, 20:17
Ответы с готовыми решениями:

Передать значение из базового класса в класс наследник
Добрый день, надо передать choice из одного класса в другой #include &lt;iostream&gt; #include&lt;string&gt; using namespace std; ...

Как передать значение переменной из класса в класс?
Здравствуйте. Я бы хотел в этой программе передать значение TOTAL_PSU в другой класс, чтобы произвести сравнение значений в функции...

Зачем переменной типа базового класса инициализировать дочерний?
Есть такой код, для примера: using System; namespace ConsoleApplication1 { abstract class TableFun { public...

50
фрилансер
 Аватар для Алексей1153
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,995
15.11.2021, 20:43
Fradid, никак не надо передавать, это уже поле класса
0
1 / 1 / 0
Регистрация: 29.04.2021
Сообщений: 19
15.11.2021, 20:49  [ТС]
Хорошо, а как тогда мне вычислить периметр квадрата? мне всегда выдает 0
0
фрилансер
 Аватар для Алексей1153
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,995
15.11.2021, 20:52
Цитата Сообщение от Fradid Посмотреть сообщение
square reshobj;
    reshenobj.input();
    //reshobj.input();
попробуй ввести в него данные ))
0
1 / 1 / 0
Регистрация: 29.04.2021
Сообщений: 19
15.11.2021, 20:59  [ТС]
Я уже пробовал так и у меня вместо одного ввода, вылезает два, сначала для первого объекта, потом для второго

Добавлено через 48 секунд
а мне нужно, чтоб я ввел один раз и оно посчитало для двоих, но не понимаю как это реализовать
0
 Аватар для vlisp
1062 / 983 / 153
Регистрация: 10.08.2015
Сообщений: 5,331
15.11.2021, 21:03
прикол в том, что наследовать надо не квадрат от прямоугольника, а наоборот. не все и не сразу это понимают
0
фрилансер
 Аватар для Алексей1153
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,995
15.11.2021, 21:08
Fradid, так введи, а потом создай объекты и передай значения в конструкторы
0
1 / 1 / 0
Регистрация: 29.04.2021
Сообщений: 19
15.11.2021, 21:12  [ТС]
то есть препод в задании написал какой-то бред?

Добавлено через 2 минуты
Алексей1153, не понял, как?
0
фрилансер
 Аватар для Алексей1153
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,995
15.11.2021, 21:16
Лучший ответ Сообщение было отмечено Fradid как решение

Решение

Fradid, например, так

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
#include <iostream>
 
class rectangle
{
protected:
    float a{};
    float b{};
    
public:
    rectangle()=default;
    rectangle(const float a, const float b):a(a),b(b){}
    float Perimeter(){return 2.0 * (a + b);}
};
 
class square :public rectangle
{
public:
    square()=default;
    square(const float a):rectangle(a,a){}
};
 
int main()
{
    float a{}; std::cout << "Input a side - > "; std::cin >> a;
    float b{}; std::cout << "Input b side - > "; std::cin >> b;
    
    rectangle r{a,b};
    square sq{a};
 
    std::cout << "Perimeter of Rectangle - > " << r.Perimeter() << std::endl;
    std::cout << "Perimeter of Square - > "    << sq.Perimeter() << std::endl;
}
1
1 / 1 / 0
Регистрация: 29.04.2021
Сообщений: 19
15.11.2021, 21:25  [ТС]
Я понял, еще один вопрос. Почему у меня здесь square::square(float A) : rectangle(A, B) {} ошибка
Миниатюры
Как передать записанные значение базового класса в дочерний класс  
0
1 / 1 / 0
Регистрация: 29.04.2021
Сообщений: 19
15.11.2021, 21:29  [ТС]
Вот я немного переделал, но все равно ошибка
Миниатюры
Как передать записанные значение базового класса в дочерний класс   Как передать записанные значение базового класса в дочерний класс   Как передать записанные значение базового класса в дочерний класс  

Изображения
 
0
фрилансер
 Аватар для Алексей1153
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,995
15.11.2021, 21:38
Цитата Сообщение от Fradid Посмотреть сообщение
Почему у меня здесь square::square(float A) : rectangle(A, B) {} ошибка
нужно rectangle(A,A)
0
 Аватар для vlisp
1062 / 983 / 153
Регистрация: 10.08.2015
Сообщений: 5,331
15.11.2021, 21:43
Цитата Сообщение от Fradid Посмотреть сообщение
то есть препод в задании написал какой-то бред?
А где задание?
0
1 / 1 / 0
Регистрация: 29.04.2021
Сообщений: 19
15.11.2021, 21:47  [ТС]
Алексей1153, а так можно?) (если что, я так сделал и всё получилось)
0
фрилансер
 Аватар для Алексей1153
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,995
15.11.2021, 21:48
Fradid, как - "так" ?
0
1 / 1 / 0
Регистрация: 29.04.2021
Сообщений: 19
15.11.2021, 21:50  [ТС]
vlisp, Создать иерархию классов Прямоугольник<-Квадрат, вычислить периметр фигур и сравнить

Добавлено через 1 минуту
вот так
Цитата Сообщение от Алексей1153 Посмотреть сообщение
rectangle(A,A)
, я думал, что можно только rectangle(A,B)
0
 Аватар для vlisp
1062 / 983 / 153
Регистрация: 10.08.2015
Сообщений: 5,331
15.11.2021, 21:51
так откуда стрелочка показывает тот и папа
0
1 / 1 / 0
Регистрация: 29.04.2021
Сообщений: 19
15.11.2021, 21:54  [ТС]
vlisp, немного ошибся, там папа должен быть Прямоугольник
0
фрилансер
 Аватар для Алексей1153
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,995
15.11.2021, 21:55
Цитата Сообщение от Fradid Посмотреть сообщение
я думал, что можно только rectangle(A,B)
необъявленными идентификаторами пользоваться нельзя
1
 Аватар для vlisp
1062 / 983 / 153
Регистрация: 10.08.2015
Сообщений: 5,331
15.11.2021, 21:58
папа у тебя - квадрат с одним параметром а, сын - прямоугольник с одним дополнительным параметром ь. в конструкторе папы присваиваешь значение а, в конструкторе сына вызываешь конструктор папы и назначаешь значение ь
неужели так сложно. зачем вы бабуинистикой все тут занимаетесь? ООП так не работает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2021, 21:58
Помогаю со студенческими работами здесь

Как передать 2 из 3-х значений конструктора в дочерний класс?
#include &lt;iostream&gt; #include &lt;string&gt; #include &quot;math.h&quot; using namespace std; class Uravnenie //Базовый класс { public: ...

Как передать значение переменной из класса Program в свой созданный класс?
Нужно передать значение вводимой в консоли переменной в класс, который сам создал Как это можно сделать?

Как создать динамический массив объектов базового класса и заполнить его наследниками базового класса?
#include &lt;iostream&gt; using namespace std; class P { int p; public: P() {

Нужно передать значение из класса в класс
import sys from PyQt5 import QtWidgets, QtGui class Win2(QtWidgets.QMainWindow): # Основной класс интерфейса def...

Класс: Создать на основе базового класса Car три класса-автомобиля: Тойота, Феррари, Бугатти.
Всем привет! На днях дали эту задачу, пытался делать по-разному не хоть убей не могу сделать. К сожалению я пропустил пары по классам. А по...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru