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

Именование новых объектов - C++

Восстановить пароль Регистрация
 
pnf
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 4
21.05.2013, 17:46     Именование новых объектов #1
Доброго времени суток.
Это, вероятно, простой вопрос, но в лабах и учебниках пока ответа на него не встретил.
Допустим, я создаю класс, с неизвестным заранее количеством объектов, и мне нужна возможность, чтобы пользователь в консольном приложении мог добавлять новые объекты.
До сих пор, во всех примерах что я видел, новый объект создается и именуется в коде программы,
ну, то есть примерно так:
C++
1
2
3
object ob1;
object obj2 (obj1);
object obj3 (int i, float j);
Но если мне заранее неизвестно, сколько будет объектов, как сделать, чтобы имя нового объекта было введенным пользователем значением ? Допустим, одно из полей класса - рег.номер, и мне нужно чтобы каждый новый созданный объект был назван соответствующим ему номером.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,841
Записей в блоге: 2
Завершенные тесты: 1
21.05.2013, 17:52     Именование новых объектов #2
Цитата Сообщение от pnf Посмотреть сообщение
Но если мне заранее неизвестно, сколько будет объектов, как сделать, чтобы имя нового объекта было введенным пользователем значением ?
Никак. У Вас же уже скомпилированная программа.
Но можно сделать некоторую обертку, в которой реализовать подобное поведение, точнее эмуляцию такого поведения
pnf
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 4
21.05.2013, 18:10  [ТС]     Именование новых объектов #3
Цитата Сообщение от Croessmah Посмотреть сообщение
Никак. У Вас же уже скомпилированная программа.
Но можно сделать некоторую обертку, в которой реализовать подобное поведение, точнее эмуляцию такого поведения
Не совсем ясно что имеется в ввиду под оберткой.

Поставлю вопрос по другому.
Мне нужно сделать программу, удовлетворяющую таким требованиям:
Кликните здесь для просмотра всего текста

Составить программу, которая содержит текущую информацию о книгах в библиотеке.
Сведения о книгах содержат:
-номер книги;
-фамилию и инициалы автора;
-название;
-год издания;
-количество экземпляров данной книги в библиотеке.
Программа должна обеспечивать:
-начальное формирование данных о всех книгах в библиотеке в виде списка;
-при взятии каждой книги из библиотеки вводится номер книги, и программа уменьшает значение количества книг на единицу или выдает сообщение о том, что требуемой книги в библиотеке нет, или требуемая книга находится на руках;
-при возвращении каждой книги вводится номер книги, и программа увеличивает значение количества книг на единицу;
-по запросу выдаются сведения о наличии книг в библиотеке.
Специальные требования:
- для каждой операции реализовать отдельную функцию;
- после выполнения каждой операции выводить меню пользователя;
- данные книгах в библеотеке записать в текстовый файл.

Я предположил, что нужно сделать класс book, с полями вроде названия, автора, года выпуска, рег.номера и т.д. , и с соответствующими методами. Но, если при таком подходе, нельзя добавлять новые объекты, то с какой стороны к этому заданию лучше подобраться ?
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.05.2013, 18:12     Именование новых объектов #4
pnf, а зачем Вам нужны "имена" для динамически создаваемых объектов? Что Вы сможете сделать с этими "именами"?

Добавлено через 1 минуту
Чтобы хранить множество объектов используйте контейнерные классы. std::vector, std::list, std::map ...
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,841
Записей в блоге: 2
Завершенные тесты: 1
21.05.2013, 18:19     Именование новых объектов #5
Цитата Сообщение от pnf Посмотреть сообщение
Я предположил, что нужно сделать класс book, с полями вроде названия, автора, года выпуска, рег.номера и т.д.
Так и нужно
Цитата Сообщение от pnf Посмотреть сообщение
Но, если при таком подходе, нельзя добавлять новые объекты, то с какой стороны к этому заданию лучше подобраться ?
Всё можно. Есть же динамически распределяемая память, или можно использовать контейнеры, как уже написал Tulosba, чтобы не возиться с выделением/освобождением памяти
pnf
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 4
21.05.2013, 18:26  [ТС]     Именование новых объектов #6
Цитата Сообщение от Tulosba Посмотреть сообщение
pnf, а зачем Вам нужны "имена" для динамически создаваемых объектов? Что Вы сможете сделать с этими "именами"?

Добавлено через 1 минуту
Чтобы хранить множество объектов используйте контейнерные классы. std::vector, std::list, std::map ...
Я как бы немного плаваю в вопросе, ну то есть я знаю как работать с контейнерами, классами, файлами отдельно, но связать все это вместе пробую в первый раз.
Мне непонятно собственно как эти объекты создавать динамически. Как это в виде кода будет выглядеть.
Имена, как я это понимаю ( а я понимаю, что ничего уже не понимаю) мне нужны чтобы потом обращаться к методу конкретного объекта из контейнера. Или это можно делать с помощью итератора? Опять таки, как это выглядит в виде кода ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2013, 18:46     Именование новых объектов
Еще ссылки по теме:

Вычисление новых координат для объекта C++
C++ Std::map insert in while - добавление новых элементов в цикле
Откуда узнавать о нововведениях в новых стандартах С++? C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.05.2013, 18:46     Именование новых объектов #7
pnf, например:
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
#include <list>
#include <iostream>
 
class book
{
public:
    book( int id ): id(id) {}
    int id;
};
 
int main()
{
    std::list<book> lib; // список книг - библиотека
    int cnt; 
    std::cin >> cnt; // пользователь вводит кол-во книг
 
    for( int i=0; i<cnt; ++i )
    {
        lib.push_back( book( i*10 ) ); // заполняем библиотеку книгами
    }
 
        // выводим содержимое библиотеки
    for( std::list<book>::const_iterator it = lib.begin(); it != lib.end(); ++it )
    {
        std::cout << it->id << std::endl; 
    }
 
    std::system( "pause" );
}
Yandex
Объявления
21.05.2013, 18:46     Именование новых объектов
Ответ Создать тему
Опции темы

Текущее время: 07:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru