Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание нескольких объектов класса. Цикл. 
V
    Опции темы
ioManip
Дата 26.1.2014, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 12.8.2011
Где: Благовещенск

Репутация: нет
Всего: нет



Здравствуйте! Столкнулся с такой проблемой: Как создать несколько объектов класса?

То есть к примеру есть класс "Пациент". Пользователю предлагается ввести количество пациентов. Допустим их 3.
После этого создается сначала ПервыйОбъект он заполняется и сохраняется, затем второй и так далее...

Как это можно реализовать?
--------------------
Мечты не работают, пока ты не работаешь! 
PM MAIL Skype   Вверх
Cheloveck
Дата 26.1.2014, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Как-то так...

Код

#include <string>
#include <iostream>

class Patient
{
public:
    Patient(const std::string & _name) :
        m_name(_name)
    {
    }

    void setName(const std::string & _name)
    {
        m_name = _name;
    }

    const std::string name() const
    {
        return m_name;
    }

    void setAge(unsigned short _age)
    {
        m_age = _age;
    }

    unsigned short age() const
    {
        return m_age;
    }

private:
    std::string m_name;
    unsigned short m_age;
};

size_t askCount()
{
    int count;
    for(;;)
    {
        std::cout << "Enter the Patient count: ";
        std::cin >> count;
        if(std::cin.fail())
        {
            std::cout << "The count must be a number" << std::endl;
            std::cin.clear();
            std::string invalid;
            std::cin >> invalid;
            continue;
        }
        if(count <= 0)
        {
            std::cout << "The count must be greater than 0" << std::endl;
            continue;
        }
        return count;
    }
}

void print(Patient ** patients, size_t count)
{
    std::cout << "Full patient list:" << std::endl;
    for(size_t i = 0; i < count; ++i)
    {
        std::cout << patients[i]->name() << " : " << patients[i]->age() << std::endl;
    }
}

int main()
{
    size_t count = askCount();
    Patient ** patients = new Patient *[count];
    for(size_t i = 0; i < count; ++i)
    {
        std::string name;
        std::cout << "#" << i << " Name: ";
        std::cin >> name;
        unsigned short age;
        for(;;)
        {
            std::cout << "#" << i << " Age: ";
            std::cin >> age;
            if(std::cin.fail())
            {
                std::cin.clear();
                std::string invalid;
                std::cin >> invalid;
                std::cout << "The age value must be a number" << std::endl;
                continue;
            }
            break;
        }
        std::cout << std::endl;
        patients[i] = new Patient(name);
        patients[i]->setAge(age);
    }
    print(patients, count);
    for(size_t i = 0; i < count; ++i)
    {
        delete patients[i];
    }
    delete [] patients;
    return 0;
}



Тут есть простор для оптимизации, но мысль, надеюсь, понятна.

Код

$ ./a.out 
Enter the Patient count: 2
#0 Name: first
#0 Age: 12

#1 Name: second
#1 Age: 54

Full patient list:
first : 12
second : 54


Это сообщение отредактировал(а) Cheloveck - 26.1.2014, 13:14


--------------------
user posted image
PM Jabber   Вверх
ioManip
Дата 27.1.2014, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 12.8.2011
Где: Благовещенск

Репутация: нет
Всего: нет



Ух ты! =) Большое спасибо, добрый Человек smile
--------------------
Мечты не работают, пока ты не работаешь! 
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.