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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
#1

[решено] Как использовать общие элементы в классах ? - C++

10.09.2013, 22:15. Просмотров 233. Ответов 0
Метки нет (Все метки)

Здравствуйте.
По заданию учебника делаю программу, которая реализовала бы функции библиотечного менеджера.
Там в задании реализовать различные функции, например, поиск книги по ISBN, на руках ли книга и т.д. Подразумевается создание базы данных книг.

Так вот в чем мой вопрос: пока я базу данных книг представляю в виде вектора. Как мне реализовать взаимодействие этого вектора с моими классами? Например, когда вызываю функцию поиска книги, то не получается обратиться к вектору books класса Db.

Как реализовать такие интерфейсы?

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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
class Isbn {
public:
 
    Isbn(int a, int b, int c, char d)
    : n1(a), n2(b), n3(c), x(d) {
    }
 
    Isbn()
    : n1(0), n2(0), n3(0), x('0') {
    }
 
    void get_number();
    bool check_isbn(const Isbn&);
 
    int n1, n2, n3;
    char x;
};
 
class Date {
public:
 
    enum Month {
        jan = 1, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec
    };
 
    Date(int yy, Month mm, int dd)
    : y(yy), m(mm), d(dd) {
    }
 
    Date()
    : y(2001), m(jan), d(1) {
    }
 
    void get_date();
    bool check_date(const Date&);
 
private:
    int y, d;
    Month m;
 
};
 
class Book {
public:
 
    Book(Isbn n, string a, Date d, bool h)
    : num(n), author(a), dreg(d), on_hands(h) {
    }
 
    Book()
    : num(Isbn()), author("NA"), dreg(Date()), on_hands(false) {
    }
 
    void create_item();
    //void check_on_hands(Isbn);
    void show_info(Isbn);
    Isbn num;
private:
 
    string author;
    Date dreg;
    bool on_hands;
 
};
 
class Db {
public:
 
    Db()
    : books() {
    }
    static vector<Book> books;
};
 
void Book::create_item() {
 
    cout << "Enter ISBN number:\n";
    Isbn n = Isbn();
    n.get_number();
    num = n;
    cout << "Enter name of author:\n";
    cin >> author;
    cout << "Enter date of copyright registration:\n";
    Date d = Date();
    d.get_date();
    dreg = d;
    cout << "Is book in library now (y/n)?\n";
    char ans = 'y';
    cin >> ans;
    if (ans == 'y')
        on_hands = false;
    else if (ans == 'n')
        on_hands = true;
    else
        cout << "Wrong answer!\n";
    // ... Need more instructions
}
 
void check_on_hands(Isbn n) {
 
}
 
void Book::show_info(Isbn num) {
    // ...
}
 
void Isbn::get_number() {
    cout << "Enter data in format 'xxx'-'yyy'-'zzz'-'n'\nxxx> ";
    cin >> n1;
    cout << "yyy> ";
    cin >> n2;
    cout << "zzz> ";
    cin >> n3;
    cout << "n> ";
    cin >> x;
    cout << '\n';
}
 
bool Isbn::check_isbn(const Isbn& n) {
    // ...
    return true;
}
 
void Date::get_date() {
    int mi = 0;
    cout << "Enter data in format '31.7.2010':\n";
    cin >> d;
    cout << '-';
    cin >> mi;
    m = Month(mi);
    cout << '-';
    cin >> y;
    cout << '\n';
}
 
bool Date::check_date(const Date& d) { //доработать
    return true;
}
 
int main() {
 
    Book item = Book();
    Db db = Db();
    while (true) {
        item.create_item();
        Db::books.push_back(item);
    }
}

Btw, там много логических ошибок в коде, мне интересна концепция, если можно так выразиться...

Добавлено через 14 минут
Вопрос отпал, походу Db не нужен - я забыл про элементарные ссылки. :-)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 22:15     [решено] Как использовать общие элементы в классах ?
Посмотрите здесь:
Как использовать один и тот же объект в разных классах? C++
Как правильно использовать operator= при наследовании в полиморфных и неполиморфных классах C++
Найти общие элементы C++
Общие элементы в массивах C++
общие элементы массива C++
C++ Общие элементы двух массивов
C++ Общие и частные элементы класса
Собрать общие элементы двух массивов C++
Функция находящая общие элементы двух массивов C++
Общие элементы двух массивов записать в один C++
C++ Поместить в третий массив общие элементы двух массивов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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