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

Преобразование классов одной иерархии - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Руководство на русском по GCC и g++ http://www.cyberforum.ru/cpp/thread1340662.html
Подскажите по сабжу - надо разобраться с ключами, режимами и понять общую схему работы компиляторов и линковщика. Добавлено через 3 минуты Ещё хорошо бы пример 1 - Компиляция "Hello, World!" в объектный код. 2 - Линковка. Спасибо
C++ Что нужно сделать в этой задаче Помогите понять,что нужно сделать в этой задаче: " Тема:Апроксимация При решении различных задач физики и математики часто бывает необходимо осуществить разложение периодической функции с периодом 2π в тригонометрический ряд.Один из них-ряд Фурье(1) f(x)=a_0+∑_(n=1)^∞▒(a_n cos⁡nx+b_n sin⁡nx ) (1) Если ограничиться конечным числом слагаемых,то формулу(1) можно переписать к виду:... http://www.cyberforum.ru/cpp/thread1340448.html
Указать путь к файлу C++
Проблема следующая, нужно чтобы путь к файлу задавался какой-то стандартной функцией, то есть в коде программы у меня указан только один путь, где будет создаваться файл. Существует ли функция, которая создаёт файл в том месте где запускается программа? // create text file to write into genereted numbers ofstream generated; generated.open("I:\\Dropbox\\visual studio...
Как определить порядок бит в double? C++
Как определить порядок бит в double?
C++ Розв'язування задач обробки масивів http://www.cyberforum.ru/cpp/thread1340012.html
9. У прямокутній матриці кожен нульовий елемент замінити середнім арифметичним значенням ненульових елементів того рядка, в якому розташований даний нульовий елемент. Якщо в рядку декілька нульових елементів, то вони повинні бути замінені одним і тим же значенням
C++ Розв'язування задач обробки масивів» Скласти програму для підрахунку середнього арифметичного додатніх елементів прямокутної таблиці В, що складається з MN цілих чисел. Сформувати матрицю за допомогою генератора випадкових чисел і організувати її вивід на екран. подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045

Преобразование классов одной иерархии - C++

25.12.2014, 17:01. Просмотров 306. Ответов 2
Метки (Все метки)

Всем привет.

Допустим, есть следующая иерархия классов:
C++
1
2
3
4
5
6
7
8
9
10
11
class B {
   T data;
};
 
class D1 : public B {
  // some D1 spec methods & data
};
 
class D2: public B {
  // some D2 spec methods & data
};
Требуется реализовать метод конвертации D1 <-> D2.
В обе стороны для более общего случая, но можно ограничиться и односторонним преобразованием.

Хочется сделать это элегантно. На текущий момент для рассмотрения есть такие варианты:
1. Сделать свободную функцию (семейство).
2. Добавить в D1 конструктор, принимающий D2 и наоборот.
3. Добавить в D1 метод makeD2. И симметричный в D2.

При вариантах 2,3 придется сделать классы дружественными друг другу, в варианте 1 - добавить дружественную функцию в оба класса.

Была мысль сделать метод доступа к данным в базовом классе protected, но это всё равно не позволит получить доступ в D1 к базовой части, которая содержится в D2.

С одной стороны хотелось бы избавиться от дружественности, с другой - не хочется городить лишних методов доступа.

Если у кого есть идеи на счет реализации подобной конвертации буду рад их услышать.

Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru