Форум программистов, компьютерный форум CyberForum.ru

Наследование и конструктор с аргументами по умолчанию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Метод Кардана http://www.cyberforum.ru/cpp-beginners/thread994912.html
Вот программа. Задача такая, чтобы мы вводили текст, программа его шифровала по Методу КАРДАНА(Решетка Кардана), а затем расшифровывала его и выводила. Эта прорамма только расшифровует зашифрованый текст, а нужно еще чтобы шифровала аналогичным способом. За помощь Спасибо! #include <iostream.h> int main(int argc, char* argv) { const int SIZE = 5; char *buf = {"guhoe", "llxoe", "bnce.",
C++ работа с бинарным файлом почему программа не выводит 16-ричный дамп бинарного файла? int main () { streamoff lSize; char *buffer; ifstream File("myfile.bin" , ios::binary); if (!File) { cerr << "File error"; http://www.cyberforum.ru/cpp-beginners/thread994910.html
C++ Class book continue
Задание: Создать заголовочный файл bookshop.h и описать в нём класс bookshop со следующими полями (закрытыми) и функциями-членами (открытыми): Поля _name (название магазина, std::string) и _books (вектор объектов класса book). Конструктор с одним параметром — названием магазина. Константная функция чтения названия магазина. Перегруженная операция += для добавления книги в магазин (в виде...
C++ Вывод всех членов структуры
Как вывести все члены структуры с помощью цикла, автоматически? С массивом, например, можно так сделать: for (int i = 0, i < n; i++) cout << arr; А как такое сотворить со структурой? Не хочется вручную писать всё.
C++ Найти максимальное целое число, куб которого не превышает 30000 http://www.cyberforum.ru/cpp-beginners/thread994879.html
Пожалуйста помогите написать программу на с++ которая находит максимальное целое число, куб которого не превышает 30000
C++ c++11 и $define Есть код который прекрасно компилируется без -std=c++11, но как только я включаю эту опцию то константы препроцессора не заменяются и компилятор ругается error: 'CONST_NAME' was not declared in this scope Как быть? подробнее

Показать сообщение отдельно
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
01.11.2013, 21:35     Наследование и конструктор с аргументами по умолчанию
Есть некоторый абстрактный класс "объект", который наследуют все объекты (код конструктора):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Object(const D3DXVECTOR3& position, 
        const D3DXVECTOR3& torsionAxis = D3DXVECTOR3(0.0f, 0.0f, 1.0f), const FLOAT& torsionAngle = 0.0f, const FLOAT& dTorsionAngle = 0.0f,
        const D3DXVECTOR3& rotationAngle = D3DXVECTOR3(0.0f, 0.0f, 0.0f), const D3DXVECTOR3& dRotationAngle = D3DXVECTOR3(0.0f, 0.0f, 0.0f))
    {
        this->position = position;
 
        this->rotationAngle = rotationAngle; 
        this->dRotationAngle = dRotationAngle;
 
        this->torsionAxis = torsionAxis;
        this->torsionAngle = torsionAngle; 
        this->dTorsionAngle = dTorsionAngle;
    }
как можно догадаться, главный параметр конструктора - позиция, всё остальное опционально. Эти "опциональные" параметры можно условно разбить на две категории - вращение вокруг собственной оси, и вращение вокруг произвольной (может быть выполнено одновременно).
При наследовании столкнулся не столь с проблемой, сколько с некрасивостью получающейся структуры что ли.. Дело в том, что, допустим, объект Sphere в таком случае в конструкторе помимо собственных параметров типа radius, должен брать и все эти параметры для Object конструктора, однако здесь я вижу два варианта:
1) Конструктор для сферы делается такой же, как для объекта (со значениями по умолчанию) + радиус и прочие.
---В этом случае выходит так, что при генерации параметров по умолчанию они будут переданы в конструктор объекта и, хотя параметры на самом деле не были переданы, объект будет думать, что ему передали параметры, хотя они и были взяты из значений по умолчанию конструктора класса сфера. Не очень то хорошо, разве нет?
2) Задать несколько, например, 4 конструктора класса сфера: без параметров со значениями по умолчанию, с параметрами первой группы (вращение вокруг собственной оси), с параметрами второй группы (вращение вокруг произвольной оси), с параметрами обоих групп (все параметры).
---В этом случае если я захочу добавить новые параметры, кол-во конструкторов будет увеличиваться в геометрической прогресси..

Какой подход применяют или, быть может, есть третий способ, который задают параметры по умолчанию, но, при этом, избегают недочетов этих двух?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru