![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
ioManip |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 12.8.2011 Где: Благовещенск Репутация: нет Всего: нет |
Всем привет! Мне нужно прояснить одну ситуацию!
У меня есть 3 файла: main.cpp rectangle.cpp rectangle.h Суть проблемы в том, что при подсчете объемма параллепипеда, значение площади всегда берется из конструктора по умолчанию класса Rectangle. То есть смотрите, если закоментировать вот эти строчки:
то значение площади все равно будет 50. А по идеи должно же быть 30 ? main.cpp
rectangle.cpp
rectangle.h
--------------------
Мечты не работают, пока ты не работаешь! |
||||||||
|
|||||||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Ничего не понял.
Первый прямоугольник у тебя со сторонами, которые ты задаешь при вызове конструктора с указанием сторон. Второй создаётся со значениями по умолчанию. Если ты уберёшь три строчки, в которых выводишь значение площади, то само значение площади не изменится. Просто ты отключаешь вывод значения. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
ioManip |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 12.8.2011 Где: Благовещенск Репутация: нет Всего: нет |
akizelokro, Так я комментирую не только вывод, но и создание самого объекта. Но результат все равно 50.
--------------------
Мечты не работают, пока ты не работаешь! |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Ничего не понимаю. Если ты комментируешь создание объекта (не создаёшь его), то и площади у него не должно быть, раз нет самого объекта. Или ты про первый прямоугольник rectOne, что у него площадь 50, а не 30?
Понял, ты про объём параллелепипеда. Ну так у тебя нет конструктора вида
вызывая который, ты бы создавал параллелепипед на основе уже созданного прямоугольника с произвольной длиной сторон. А когда ты создаешь параллелепипед ,указывая там члены a и b, они не изменяют a и b из базового класса. Просёк, что ты хотел сказать, вообщем. У тебя Parallpiped::a совсем не то, что Parallpiped::Rectangle::a. Это сообщение отредактировал(а) akizelokro - 13.10.2013, 10:06 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
ioManip |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 12.8.2011 Где: Благовещенск Репутация: нет Всего: нет |
Я ничего не понял!
![]() UPD: Вообщем все решил вот так
akizelokro Возможно, Вы именно это имели ввиду! UPD2 А хотя подождите, вроде не так ![]() Это сообщение отредактировал(а) ioManip - 15.10.2013, 02:58 --------------------
Мечты не работают, пока ты не работаешь! |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
плохое решение: параллелепипед это не прямоугольник. да и значения
не верны для Parllepiped, и переопределить не получится, т.к. не виртуальные если уж хочешь общности, создай параллелепипед в N-мерном пространстве а если хочешь использовать повторно то полезное, что есть в прямоугольнике, то параллелепипед включает прямоугольник как основание |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Можно и так. Просто тема немного в другом, при наследовании, ты должен понимать, переменная а, член класса Rectangle, при наследовании будет наследоваться классом Parllepiped. Но она не та переменная a, которую ты определяешь в классе Parllepiped (в твоей модели у тебя две переменные a, одна член класса Parllepiped, а вторая переменная a наследуется из класса Rectangle). Если ты хочешь, чтобы у тебя была одна переменная a, то выбрось определение из Parllepiped. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
o2n3e |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.8.2011 Репутация: -4 Всего: -5 |
Модератор: Сообщение скрыто. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |