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

Работа с вектором из класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как убрать указатели на пробелы и табы http://www.cyberforum.ru/cpp-beginners/thread948021.html
Помогите пожалуйста... У Меня следующая проблема: http://i60.***********/thumb/2013/0903/54/e1ea807dc1af483a58b8a883f6cac154.jpeg Как Мне убрать то, что выделено в скриншоте(т.е. указатели на...
C++ Сравнение переменных или чтение с файла? После тестировки, выяснилось, что проблема возникает в строке указаной коментом. Хочу узнать в чем заключается ошибка.Возможно проблема связана с чтением с файла. в файле текст записан в таком... http://www.cyberforum.ru/cpp-beginners/thread947988.html
Среда разработки. Дайте совет C++
Подскажите пожалуйста такой момент: я только изучаю ооп, так что пишу под консоль. Сейчас пользуюсь MVS.Все хорошо, но напрягает количество файлов/каталогов при создании проекта. Есть ли такая...
Вешает ноутбук C++
Прикиньте, при запускепрограммы, содержащей следующие строки, пошли конкретные тормоза. Что и ожидалось. Хотя памяти она ест но и и не совсем так уже, не так уж . Главное, когда минут через пять я...
C++ Задания в книге http://www.cyberforum.ru/cpp-beginners/thread947925.html
Читаю Язык программирования С++. Лекции и упражнения. Прата С. 2012. После каждой главы идут "Вопросы по самоконтролю" - на которые есть ответы, с которыми я могу свериться. А вот дальше идут...
C++ Простые алгоритм поиска? Поделитесь, пожалуйста, вашими простые алгоритмами поиска char в char. Вот - есть мой собственный алгоритм, но мне он кажется некрасивым, громоздким и усложненным. Если понадобится, то мог его... подробнее

Показать сообщение отдельно
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.09.2013, 19:50
Если по-быстрому, то как-то так (добавил к коду из другой вашей темы):
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <windows.h>
using namespace std;
 
class Employee
{  
public: 
    string name;
    int id;    
    double wage;
    Employee();
    Employee(const string n, int id_);
    virtual void wage_count() = 0;
    virtual void show(){cout<<name<<" "<<wage<<endl;};
    virtual ~Employee(){};
    static  int Compirer(Employee *one, Employee *two);
};
 
int Employee::Compirer(Employee *one, Employee *two){
    if(one->wage == two->wage)
        return (one->name.compare(two->name.c_str())<0)? 1:0;
    else
        return (one->wage > two->wage)? 1 : 0;
}
 
class Bytime : public Employee
{    
    double b_w;
    double b_wage;
public:
    Bytime();
    Bytime(const string n, int id, double b_w);
    virtual void wage_count();
};
 
class Fixed : public Employee
{    
    double f_w;
    double f_wage;
public:
    Fixed();
    Fixed(const string n, int id, double f_w);
    virtual void wage_count ();
};
 
Employee::Employee()
{}
Employee::Employee(const string n, int id_):name(n), id(id_)
{}
Fixed::Fixed()
{}
Fixed::Fixed(const string n, int id, double f_w) : Employee(n,id)
{
    f_wage = f_w;
}
Bytime::Bytime()
{}
Bytime::Bytime(const string n, int id, double b_w) : Employee(n,id)
{
    b_wage = b_w;
}
void Bytime::wage_count()
{
    wage = 20.8*8*b_wage;
}
void Fixed::wage_count()
{
    wage = f_wage;
}
 
class ListEmployee
{
    vector <Employee *> vemp;
 
public :
    void add(Employee* emp)
    {
        vemp.push_back(emp);
    }
    
    void sortList()
    {
        sort(vemp.begin(), vemp.end(), &Employee::Compirer);
    }
 
    void showList()
    {
        for(int i = 0; i < vemp.size(); ++i) 
        {
            vemp[i]->show();
        }
    }
 
    void wage_countList()
    {
        for(int i = 0; i < vemp.size(); ++i) 
        {
            vemp[i]->wage_count();
        }
    }
};
 
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
    Bytime bt("Vasya", 1, 5.0);
    Bytime bt1("Basya", 2, 6.0);
    Fixed fx("Alice", 3, 832.0);
    Fixed fx1("Sonya", 4, 850.0);
    
    ListEmployee listemp;
    
    listemp.add(&bt);
    listemp.add(&bt1);
    listemp.add(&fx);
    listemp.add(&fx1);
 
    listemp.wage_countList();
 
    listemp.showList();
    
    listemp.sortList();
    
    cout<<"-------------------"<<endl;
    
    listemp.showList();
    
    cin.get();   
    return 0;
}
Добавлено через 16 минут
Если вы в одном списке будете хранить указатели на объекты разных классов, то хорошо бы сделать в каждом классе идентификатор класса, по которому можно будет, в общем списке, отличать объекты одного класса от другого (если, например, потребуется вывести данные работников определённого класса). И добавление работников в список можно так организовать, чтобы сначала вводились данные, а потом, в зависимости от выбранного класса, вызывался нужный конструктор.
И, по моему, раз уж список, то здесь лучше использовать std::list, а не std::vector.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru