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

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

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

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

10.09.2013, 22:15. Просмотров 237. Ответов 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++):

Как использовать один и тот же объект в разных классах? - C++
Подскажите, пожалуйста, как получить доступ к функции через объект. Второй день бьюсь, хотя решение должно быть простое В классе A...

Как правильно использовать operator= при наследовании в полиморфных и неполиморфных классах - C++
Доброго времени суток! Изучаю книгу С. Прата &quot;Язык программирования C++. Лекции и упражнения.&quot; Закончил 13-ю главу, посвященную...

Найти общие элементы - C++
Как найти общие элементы двух целочисленных массивов и записать их в третий массив. Массивы сформированы случайно.

общие элементы массива - C++
Привет! есть задание Даны два массива : А и B. Необходимо создать третий массив, в котором нужно собрать общие элементы двух массивов. ...

Общие элементы в массивах - C++
Здравствуйте. Задача: есть два возрастающих массива длиной k и m. нужно найти общие элементы и разместить их в массиве t. Вот мой код, но...

Общие и частные элементы класса - C++
Где ошибка в коде? // infohide.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2013, 22:15
Привет! Вот еще темы с ответами:

Общие элементы двух массивов - C++
Есть два массива, 1-ий -- на 10 элементов, 2-ой – на 20 элементов. - найти все одинаковые числа, которые есть в первом и во втором....

Собрать общие элементы двух массивов - C++
Задание: Даны два массива: А и B (M и N вводятся с клавиатуры). Необходимо создать третий массив минимально возможного размера, в...

Функция находящая общие элементы двух массивов - C++
Написать функцию, которая на основе двух динамических массивов А и В быть разного размера строит третий динамический массив С минимального...

Общие элементы двух массивов записать в один - C++
void search(int a,int b,int c,int n,int m){ for(int i=0;i&lt;n;i++){ for(int j=0;j&lt;m;j++){ if(a==b){ // так выводит массив c...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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