2013-11-17 7 views
0

У меня довольно простой вопрос. У меня есть программа, которая подсказывает пользователю, сколько людей требуется для моделирования в программе. Мне интересно, как бы я начал инициализировать значение объектов cin. Вот фрагмент того, что я ищу:Создайте желаемый входной номер объектов C++

cout<<"Number of users? "; 
int users; 
cin>>users; 

Основы ^. Я хочу взять вход, который я получаю для пользователей, и сделать это много людей. У меня есть класс под названием CPerson, который имеет несколько базовых функций-членов, таких как getName() и getGender(). Я не так обеспокоен этим. Затем я должен уметь помещать количество пользователей, созданных в очередь, которые, как я полагаю, не будут такими трудными, когда я инициализирую объекты.

Благодарим за помощь.

UPDATE: Я закончил с чем-то похожим на то, что дало желаемые результаты. Спасибо всем.

vector<CPerson*> people; 
for (unsigned int x=0; x<users; x++) { 
    CPerson *user = new CPerson(Names[x]); 
    people.push_back(user); 
    cout<<user->getName()<<endl; 
} 
+0

Просмотрите стандартные варианты библиотек для контейнеров для хранения, вы можете извлечь наибольшую выгоду из 'std :: vector'. –

+0

@izuriel Я пытаюсь реализовать вектор, но компилятор выдает исключение из-за того, что векторный индекс находится вне диапазона. 'vector пользователь; for (unsigned int x = 0; x zweed4u

+0

@ zweed4u Это определенно неправильно. Что делает этот код? – 0x499602D2

ответ

1

После того, как вы получите входной сигнал от пользователя вы можете создать динамический массив:

int n; 
std::cin >> n; 

int* array = new int[n]; 
// ... 
delete[] array; 

Или вы можете использовать std::vector, где размер может вместить вход пользователей.

+0

Я думал, что размеры массива в C++ должны были составлять постоянные времени компиляции? Или это относительно новая особенность C++? –

+0

@izuriel Это верно только тогда, когда вы создаете массив в стеке (размер должен быть известен во время компиляции). Поскольку мы выделяем кучу, * и * размер известен во время выполнения, это отлично работает. – 0x499602D2

Смежные вопросы