Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Как определить разделить при чтении из файла https://www.cyberforum.ru/ cpp-beginners/ thread1219495.html
Дан текстовый файл, в котором информация перечислена через запятую: a,b,c,d,e,f без пробелов. Нужно заполнить вектор каждым отдельным словом. Как сделать так, что бы каждое слово читалось по отдельности?
C++ Сортировка без перестановки элементов
мое задание:Реализуйте двунаправленный список. Необходимо предусмотреть режим сортировки элементов списка без перестановки самих элементов. _________________________________ Что значит сортировка без перестановки элементов?как это?
C++ Слетает прога при присваивании разименованованному указателю https://www.cyberforum.ru/ cpp-beginners/ thread1219463.html
Помогите плз! Не могу присвоить значение элементу строки; #include <iostream> using namespace std; main() { char* s1 = (char*) "12345"; *s1 = '2'; cout << s1;
C++ Переход к работе с формами - что для этого нужно? https://www.cyberforum.ru/ cpp-beginners/ thread1219445.html
Добрый день. Изучаю программирование на языках С++ и Джаве. Уже 2 года. Но только в консольке. Сейчас захотелось научиться работать с Формами. Подскажите : 1. Где можно найти гайд или лучше видео гайд, как с консолек перейти на формы ? 2. На каком языке проще перейти на формы. Джаве или С++ ? 3. В целом сложно ли без всяких преподавателей самому перейти ?
Вывести квадраты натуральных чисел, которые меньше указаного числа C++
вывести квадраты натуральных чисел, которые меньше за указаное число
C++ Классы и наследование c++ https://www.cyberforum.ru/ cpp-beginners/ thread1219433.html
Написать программу которая описывает иерархию классов: ошибка в программе ("недостаточно привилегий", "ошибка преобразования", "невозможно преобразовать значение", "невозможно привести к интерфейсу"). Наследники должны иметь поля, содержащие дополнительные сведения об ошибке, если такие имеются.Продемонстрировать работу всех методов классов,предоставив пользователю выбор типа объекта для...
C++ Подсчитать количество четных элементов массива https://www.cyberforum.ru/ cpp-beginners/ thread1219423.html
Написать программу, которая вводит с клавиатуры массив из 1 целых чисел, считает колличество четных элементов и выводит результат пользователю, затем вводит с клавиатуры строку не более 20 символов , копирует введенную строку в другую переменную и выводит результат пользователю Добавлено через 14 минут из 10 целых чисел* ошибочка вышла
C++ Преобразование пользовательских типов
Здравствуйте. Помогите с одним вопросом, это пример из книги Лафоре ООП С++, не могу разобраться как работают функции int getHrs() const { return hours; } int getMins() const { return minutes; } int getSecs() const { return seconds; } в классе time24, объясните кто сможет. Заранее спасибо. //times2.cpp //converts from time24 to time12 using constructor in time12 #include <iostream>...
C++ Нет подходящего конструктора по умолчанию. Наследование https://www.cyberforum.ru/ cpp-beginners/ thread1219361.html
Скидываю хидер и исходник к нему: хидер(Main_Menu.h): #include "stdafx.h" #ifndef MAIN_MENU_DEF #define MAIN_MENU_DEF 1 #include "BaseClasses.h"
C++ Программно выключить компьютер https://www.cyberforum.ru/ cpp-beginners/ thread1219343.html
помогите сделать програму штоб виключать компютер
C++ Нужны материалы на тему "С++ и работа с сетью"
Подскажите книжонки или сайты с уроками по теме: c++ и работа с сетью Добавлено через 10 минут И какие для этого компоненты есть? Слышал можно инди скачать для этого 0_о (Для visual studio - 2012)
C++ Генератор случайных чисел https://www.cyberforum.ru/ cpp-beginners/ thread1219331.html
Еще одна тема о генераторе. Только вопрос, на который я пока не нашел ответа в других темах. Как сгенерировать случайное число в двух или более разных заданных диапазонах? Т. е. если мы стандартно описываем генерацию в диапазоне от m до n: rand() % (n+1-m) + m то здесь всё ясно. Но мне нужно сгенерировать например число, которое будет входить в один из диапазанов, например от 1 до 10 или от...
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
29.06.2014, 20:24 0

Сравнение производных классов - C++ - Ответ 6378451

29.06.2014, 20:24. Показов 4880. Ответов 24
Метки (Все метки)

Ответ

Voivoid, у меня когда-то примерно так и было реализовано) А потом совесть замучила за то, что везде дублируется функция, отличающаяся не поведением, а только данными.
В итоге получилось что-то такое:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <algorithm>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
 
class BasePriority {
public:
    virtual int GetPriority() const = 0;
    virtual std::string Name() const = 0;
};
 
template <int p>
class Priority : public BasePriority {
public:
    int GetPriority() const override { return priority_; }
private:
    static const int priority_ = p;
};
 
class A : public Priority<2> {
public:
    std::string Name() const override {
        return "class A";
    }
};
 
class B : public Priority<1> {
public:
    std::string Name() const override {
        return "class B";
    }
};
 
typedef std::shared_ptr<BasePriority> BasePriorityPtr;
typedef std::vector<BasePriorityPtr> BasePtrContainer;
 
int main() {
    struct PriorityComparator {
        bool operator()(const BasePriorityPtr& lhs,
                const BasePriorityPtr& rhs) const {
            return lhs->GetPriority() < rhs->GetPriority();
        }
    };
        
    BasePtrContainer container {
        std::make_shared<B>(),
        std::make_shared<A>(),
        std::make_shared<B>(),
        std::make_shared<B>()
    };
    
    std::sort(container.begin(), container.end(), PriorityComparator());
    
    for (const auto& item : container) {
        std::cout << item->Name() << std::endl;
    }
    
    return 0;
}
Иерархия жирнее, но дублирования уже нет.

Вернуться к обсуждению:
Сравнение производных классов C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2014, 20:24
Готовые ответы и решения:

Наследование классов. Копирование производных классов
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем...

Использование базовых и производных классов
Не могу решить задачу с классами помогите с решением. Создать класс String – строка. Определить...

Файлы и объекты производных классов
Вопрос следующий: имеется два класса, базовый и производный. В файл бинарно записывается объект...

Массив объектов разных производных классов
Задача такая: базовый класс - фигура, производные классы - круг, треугольник и т.п. Пользователь...

24
29.06.2014, 20:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2014, 20:24
Помогаю со студенческими работами здесь

Функция создающая объекты производных классов
Функция получает входной параметр - целое число. Если оно равно 0, создается новый объект -...

Множественное наследование. Построение производных классов
Необходимо построить иерархию классов согласно схемы наследования. Каждый класс должен содержать...

Конструктор по умолчанию для производных классов
Допустим, имеется код: class abstr_emp { private: string fname; // abstr_emp's first...

Конструктор копирования производных классов: для чего это нужно?
Доброго времени суток! #ifndef EMP_H #define EMP_H #include &lt;iostream&gt; #include &lt;string&gt; ...

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