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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Текст из файла, и его редактирование http://www.cyberforum.ru/cpp-beginners/thread952080.html
Добрый вечер! Есть задача: нужно написать программу, что бы та выводила стихотворение Тютчева "люблю грозу в начале мая" из файла(скажем .txt) в окно консоли в стихотворном виде. Я добился только того, что бы программа выводила это стихотворение сплошным текстом, то есть без переноса строк. Помогите пожалуйста, завтра эту байду нужно срочно сдать. Вот что у меня есть: #include "stdafx.h"...
C++ Задача на списки Пусть в файле хранятся записи со сведениями об автомобилях и их владельцах (марка, номер ГАИ, фамилия владельца); Необходимо: а) для каждой марки автомобиля составить список, содержащий фамилии владельцев автомобилей данной марки; б) для каждой фамилии владельца составить список, содержаший информацию об автомобилях, принадлежащих данному владельцу. Помогите написать эту программу, и если... http://www.cyberforum.ru/cpp-beginners/thread952079.html
C++ Экспонента
Как вывести число 1234567.89 в форме экспоненты?
Условие прерывания цикла C++
Из-за чего происходит(условие прерывания) выход из цикла? Мои предположения что пока b не равно 0, то цикл выполняется, как только смотрит ага 0, выходит. Разъясните подробнее пожалуйста. #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; int _tmain(int argc, _TCHAR* argv) {
C++ Нужно разработать класс "вектор" и реализовать операцию векторного умножения векторов http://www.cyberforum.ru/cpp-beginners/thread952075.html
Помогите, пожалуйста, не могу разобраться что не так ! #include <vcl.h> #include <vector> #include <conio.h> #include <iostream.h> #pragma hdrstop #pragma argsused class vect { public:
C++ Вывести на экран оценку тестируемого в зависимости от набранного количества баллов Ребят решите пожалуйста! 1)Составить программу Проведен тест,оцениваемый в целочисленный баллах от нуля до ста.Вывести на экран оценку тестируемого в зависимости от набранного количества баллов:от 90 до 100-"отлично",от 70 до 89-"хорошо",от 50 до 69-"удовлетворительно",менее 50 "неудовлетворительно". 2)Вывести на экран числа в виде следующей таблицы: 6 6 6 6 6 7 7 7 7 8 8 8 подробнее

Показать сообщение отдельно
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
10.09.2013, 22:15     [решено] Как использовать общие элементы в классах ?
Здравствуйте.
По заданию учебника делаю программу, которая реализовала бы функции библиотечного менеджера.
Там в задании реализовать различные функции, например, поиск книги по 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 не нужен - я забыл про элементарные ссылки. :-)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru