Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 4
1

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

21.05.2013, 17:46. Показов 613. Ответов 6
Метки нет (Все метки)

Доброго времени суток.
Это, вероятно, простой вопрос, но в лабах и учебниках пока ответа на него не встретил.
Допустим, я создаю класс, с неизвестным заранее количеством объектов, и мне нужна возможность, чтобы пользователь в консольном приложении мог добавлять новые объекты.
До сих пор, во всех примерах что я видел, новый объект создается и именуется в коде программы,
ну, то есть примерно так:
C++
1
2
3
object ob1;
object obj2 (obj1);
object obj3 (int i, float j);
Но если мне заранее неизвестно, сколько будет объектов, как сделать, чтобы имя нового объекта было введенным пользователем значением ? Допустим, одно из полей класса - рег.номер, и мне нужно чтобы каждый новый созданный объект был назван соответствующим ему номером.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2013, 17:46
Ответы с готовыми решениями:

Структуры - именование объектов
Доброго времени суток. Пишу одну консольную программу, выглядит это примерно так: создается...

Создание новых объектов циклом
Не могу придумать решение задачи. Надо сделат следующие: есть textbox - в него вводится цифра...

Динамическое добавление новых объектов
Есть кнопка, при нажатии на которую, должна создаваться рядом ещё одна кнопка с применяемым...

Добавление новых объектов в <Grid/>
&lt;Grid/&gt; В окне приложения, при добавлении в него объектов в коде мы пишем: Grid.SetRow(textBox1,...

6
Don't worry, be happy
17139 / 10015 / 1932
Регистрация: 27.09.2012
Сообщений: 24,929
Записей в блоге: 1
21.05.2013, 17:52 2
Цитата Сообщение от pnf Посмотреть сообщение
Но если мне заранее неизвестно, сколько будет объектов, как сделать, чтобы имя нового объекта было введенным пользователем значением ?
Никак. У Вас же уже скомпилированная программа.
Но можно сделать некоторую обертку, в которой реализовать подобное поведение, точнее эмуляцию такого поведения
1
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 4
21.05.2013, 18:10  [ТС] 3
Цитата Сообщение от Croessmah Посмотреть сообщение
Никак. У Вас же уже скомпилированная программа.
Но можно сделать некоторую обертку, в которой реализовать подобное поведение, точнее эмуляцию такого поведения
Не совсем ясно что имеется в ввиду под оберткой.

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

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

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

Добавлено через 1 минуту
Чтобы хранить множество объектов используйте контейнерные классы. std::vector, std::list, std::map ...
1
Don't worry, be happy
17139 / 10015 / 1932
Регистрация: 27.09.2012
Сообщений: 24,929
Записей в блоге: 1
21.05.2013, 18:19 5
Цитата Сообщение от pnf Посмотреть сообщение
Я предположил, что нужно сделать класс book, с полями вроде названия, автора, года выпуска, рег.номера и т.д.
Так и нужно
Цитата Сообщение от pnf Посмотреть сообщение
Но, если при таком подходе, нельзя добавлять новые объекты, то с какой стороны к этому заданию лучше подобраться ?
Всё можно. Есть же динамически распределяемая память, или можно использовать контейнеры, как уже написал Tulosba, чтобы не возиться с выделением/освобождением памяти
1
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 4
21.05.2013, 18:26  [ТС] 6
Цитата Сообщение от Tulosba Посмотреть сообщение
pnf, а зачем Вам нужны "имена" для динамически создаваемых объектов? Что Вы сможете сделать с этими "именами"?

Добавлено через 1 минуту
Чтобы хранить множество объектов используйте контейнерные классы. std::vector, std::list, std::map ...
Я как бы немного плаваю в вопросе, ну то есть я знаю как работать с контейнерами, классами, файлами отдельно, но связать все это вместе пробую в первый раз.
Мне непонятно собственно как эти объекты создавать динамически. Как это в виде кода будет выглядеть.
Имена, как я это понимаю ( а я понимаю, что ничего уже не понимаю) мне нужны чтобы потом обращаться к методу конкретного объекта из контейнера. Или это можно делать с помощью итератора? Опять таки, как это выглядит в виде кода ?
0
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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" );
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2013, 18:46

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Создание новых объектов сверху а не снизу
Помогите сделать так, чтобы новые объекты добавлялись сверху а старые опускались вниз, а не...

Рисование новых объектов, не затирая старых
Всем привет, возникла необходимость динамического размещения фигур, подскажите как это делается...

Удаление дочерних объектов и сразу же создание новых
Пытаюсь загрузить игру, что-то не получается удалить все дочерние объекты со сцены и добавить новые...

Реализация процесса создания новых объектов и их сортировка?
Надо написать консольную прилогу. Формат взаимодействия с пользователем максимально простой не в...


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

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

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