Как создать массив объектов класса c
Перейти к содержимому

Как создать массив объектов класса c

  • автор:

Создать массив объектов класса

Author24 — интернет-сервис помощи студентам

Создать массив объектов класса Patient
Patient: Фамилия, Имя, Отчество, Адрес, Номер медицинской карты, Диагноз. Создать массив объектов.

Создать массив объектов разработанного класса
Нужно создать массив объектов разработанного класса в классе Program и заполнить объектами из.

Разработать класс Book, создать массив объектов класса
Разработать классы для описанных ниже объектов. Включить в класс методы set (), get (), show ().

Можно ли создать массив из объектов базового и производного класса?
Доброй ночи. Есть задание: Возник вопрос о реализации метода "TovarRead". Насколько я понял.

Регистрация: 02.10.2016
Сообщений: 74

1 2 3 4 5 6 7 8 9 10 11 12 13 14
for(int i=0;in;i++) { newFile[i] = new File(); Console.WriteLine("Ввод данных\n"); Console.WriteLine("Введите size:"); newFile[i].size = int.Parse(Console.ReadLine()); Console.WriteLine("Введите name:"); newFile[i].name = Console.ReadLine(); Console.WriteLine("Введите date:"); newFile[i].date = Convert.ToDateTime(Console.ReadLine()); Console.WriteLine("Введите quantity:"); newFile[i].quantity = int.Parse(Console.ReadLine()); Console.WriteLine(newFile[i].ToString()); }

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Создать массив объектов данного класса (задача и наброски кода внутри)
Текст задачи: 2. Напишите программу, в которой объявляется делегат для методов с символьным.

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

Массив объектов базового класса, позволяющий работать с набором объектов — чтение, вывод
Расширить программы с классами. Каждый разработанный класс считать базовым; для каждого такого.

Передача ссылки на объект класса (массив объектов класса)
Доброго времени, уважаемые форумчане. Прошу прощения за столь глупый вопрос, но правда очень долго.

Или воспользуйтесь поиском по форуму:

C++. Классы и массивы. Инициализация массивов значениями данных из объектов класса. Примеры

Классы и массивы. Инициализация массивов значениями данных из объектов класса. Примеры

Поиск на других ресурсах:

1. Инициализация массива значениями, которые есть членами данных объекта. Пример

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

Пример определяет класс Radius , в котором объявляются:

  • внутренняя private переменная radius ;
  • внутренний private метод CalcValues() , заполняющий значениями public -переменные length , area , volume ;
  • общедоступные ( public ) внутренние переменные класса length , area , volume , содержащие соответствующие значения длины окружности, площади круга и объема шара для радиуса r ;
  • конструкторы класса;
  • методы доступа GetR() SetR() .

Листинг класса следующий:

// класс, реализующий величину радиуса геометрической фигуры class Radius < double radius; // переменная, определяющая радиус // внутренний метод, формирующий значения переменных length, area, volume void CalcValues(void) < const double pi = 3.141592653589; length = 2 * pi * radius; area = pi * radius * radius; volume = 4.0/3.0 * pi * radius * radius * radius; > public: double length; // длина окружности double area; // площадь круга double volume; // объем шара // конструкторы Radius() < radius = 1; CalcValues(); // заполнить переменные length, area, volume > Radius(double radius) < this->radius = radius; CalcValues(); // заполнить переменные length, area, volume > // методы доступа int GetR(void) < return radius; > void SetR(double radius) < this->radius = radius; CalcValues(); // заполнить переменные length, area, volume > >;

Использование класса в функции main() или другой функции:

Radius r(3); // объект r класса Radius // инициализация массива V значениями, которые есть членами данных объекта r double V[] = < r.length, r.area, r.volume >; double x; x = V[0]; // x = 18.8496 - длина окружности x = V[1]; // x = 28.2743 - площадь круга x = V[2]; // x = 113.097 - объем шара
2. Инициализация массива значениями, которые возвращают объекты класса. Пример

Элементы массива могут быть инициализированы значениями, которые возвращают методы некоторого класса. В примере демонстрируется инициализация массива V значениями, которые возвращают методы класса Radius : Length() , Area() , Volume() .

Объявление класса имеет вид;

// класс, который реализует величину радиуса некоторой геометрической фигуры class Radius < double radius; // переменная, определяющая радиус public: double Length() < return (2 * 3.1415 * radius); > double Area() < return (3.1415 * radius * radius); > double Volume() < return (4.0/3.0 * 3.1415 * radius * radius * radius); > // конструкторы Radius() < radius = 1; >Radius(double radius) < this->radius = radius; > // методы доступа int GetR(void) < return radius; > void SetR(double radius) < this->radius = radius; > >;

Использование класса в некотором методе

Radius r(3); // объект r класса Radius // инициализация массива V значениями, которые возвращают методы объекта класса r double V[] = < r.Length(), r.Area(), r.Volume() >; double x; x = V[0]; // x = 18.8496 - длина окружности x = V[1]; // x = 28.2743 - площадь круга x = V[2]; // x = 113.097 - объем шара

Связанные темы

Как создать динамический массив из объектов класса?

Нужно создать динамический массив из объектов класса, у которого единственный конструктор принимает значение. Язык C++ без использования класса vector !

class Test < int k; public: Test(int _i) ~Test(); void put_k(int i) int get_k() >;

Реализация

#define COUNT_OBJ 4 int main() < // Данное объявление массива не является верным, т.к. конструктору класса Test в обязательном порядке нужно передать параметр типа int Test *objPtr = new Test[COUNT_OBJ]; // Со статическим объявлением массива все проще Test objArray[COUNT_OBJ] = ; return 0; >
  • Вопрос задан более трёх лет назад
  • 30479 просмотров

1 комментарий

Оценить 1 комментарий

Борода @mink_h Автор вопроса

Ivan Sokolov: Compiler: MinGW (TDM-GCC-32)
Если добавить конструктор без параметров, либо объявить статический массив Test objArray[COUNT_OBJ] = ; — в обоих случаях все работает.

Решения вопроса 2
Борода @mink_h Автор вопроса

И так, нашел несколько способов:

1. Если компилятор поддерживает стандарт C++ 2011
Test *objPtr = new Test[COUNT_OBJ] ;

2. Реализация того, что было сказано GavriKos

Test *objPtr = (Test*)calloc(COUNT_OBJ, sizeof(Test)); memset(objPtr, 0, COUNT_OBJ * sizeof(Test)); for (int i = 0; i < COUNT_OBJ; ++i) objPtr[i].put_k(i + 5);

Этот вариант нужно использовать с осторожностью, т.к. память выделяется но не вызываются конструктор и деструктор объекта.

3. Вариант, представленный Rsa97 в комментариях

Test **objPtr = new Test*[COUNT_OBJ]; for (int i = 0; i < COUNT_OBJ; ++i) objPtr[i] = new Test(i + 5);

4. На мой взгляд, самая удачная реализация с использованием Placement new. На данный способ указал Игорь Иванов

Test *objPtr = static_cast(operator new[] (COUNT_OBJ * sizeof(Test))); for (int i = 0; i < COUNT_OBJ; ++i) new (objPtr + i) Test(i + 5);

Ответ написан более трёх лет назад
Нравится 3 1 комментарий

насчёт второго варианта: мне кажется, что здесь только выделение памяти под массив. но реального заполнения элементами нету. в итоге undefined behavior. поправьте, если не прав

ksey3000

Инженер-сетевик. Программирование-хобби.
Классический Placement new
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 6

sfi0zy

Creative frontend developer
Используйте vector и не думайте ни о чем

std::vector myTests(4, Test(777)); std::cout 

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать

GavriKos

Варианты:
1) Использовать vector
2) Выделить просто участок памяти (malloc и иже с ними), а потом заполнить его в цикле
3) Не использовать конструктор с параметром, а сделать метод типа Initialize.

Ответ написан более трёх лет назад
Нравится 1 3 комментария
Борода @mink_h Автор вопроса

1 - vector мне не совсем подходит, нужно именно массив
2 - можете пояснить по-подробнее?
3 - данный класс уже написан, я могу лишь использовать то, что есть

GavriKos

mink_h Почему vector не подходит?
По второму пункту. Что то вроде такого (код очень черновой и не факт что сработает в чистом виде):
Test* foo = (test*)malloc(sizeof(Test*) * count);
for (int i=0; i

GavriKos

Вы только лишь выделяете память. Инициализировать необходимо вручную.
Ответ написан более трёх лет назад
Борода @mink_h Автор вопроса

Дело в том, что я вообще не могу объявить такой массив:
error: no matching function for call to 'Test::Test()'
Test *objPtr = new Test[COUNT_OBJ];

Rsa97

Для правильного вопроса надо знать половину ответа

Test **objPtr = new (Test *)[COUNT_OBJ]; for (int i = 0; i < COUNT_OBJ; i++) objPtr[i] = new Test(i);

Ответ написан более трёх лет назад
Борода @mink_h Автор вопроса
error: array bound forbidden after parenthesized type-id

Rsa97

mink_h: Значит так:

typedef Test * TestPtr; . Test **objPtr = new TestPtr[COUNT_OBJ]; for (int i = 0; i < COUNT_OBJ; i++) objPtr[i] = new Test(i);

Борода @mink_h Автор вопроса
Спасибо! Данный метод работает, вопрос пока не закрываю - хочется узнать еще варианты.

А что если сделать массив не объектов этого класса, а массив указателей на обьекты? А потом в цикле инициализировать каждый элемент уже с вызовом конструктора.
А вообще, используйте вектор, какие проблемы.

Ответ написан более трёх лет назад
Борода @mink_h Автор вопроса

Это аналогично тому, что предложил товарищ выше. Да, данный метод работает, вопрос пока не закрываю - хочется узнать еще варианты. vector использовать не могу.

Программист на «си с крестами» и не только

Операция присваивания или перемещения есть? Пускай даже созданная автоматически? Если есть — вот, смотрите.

#include #include class Test < int k; public: Test(int _i) void put_k(int i) int get_k() >; struct TestWrapper < Test payload; TestWrapper() : payload(0) <>TestWrapper(int i) : payload(i) <> TestWrapper(const Test& i) : payload(i) <> >; int main() < Test test(10); std::vectorv; v.push_back(test); std::cout

Если нет — тогда динамический массив так просто работать не может (фишка динамического массива — заводить новый массив и копировать информацию из старого). Только использованием умных указателей.

#include #include #include class Test < int k; public: Test(int _i) Test& operator=(const Test&) = delete; Test& operator=(Test&&) = delete; void put_k(int i) int get_k() >; int main() < std::vector> v; v.push_back(std::unique_ptr(new Test(10))); std::cout get_k()

Как сформировать массив объектов класса в программировании на языке Python

Если вы знакомы с основами программирования, то, скорее всего, уже использовали массивы для хранения и обработки данных. Однако, что делать, если вам необходимо хранить и работать с несколькими объектами одного класса? Конечно же, в данной ситуации пригодится массив объектов класса! Создание массива объектов класса является мощным инструментом, который позволяет упростить и оптимизировать ваш код. Представьте себе, что вы создали класс «Студент» с различными свойствами, такими как имя, возраст и средний балл. Однако, вам нужно хранить информацию о нескольких студентах, а не только о одном. В этом случае, использование массива объектов класса будет идеальным решением. Вы сможете создать массив, который может содержать множество объектов класса «Студент», и легко манипулировать этой информацией.

Как создать массив объектов класса в языке программирования

Как создать массив объектов класса в языке программирования

Одним из основных способов создания массива объектов класса является использование конструктора класса. Конструктор класса — это специальный метод, который вызывается при создании нового объекта класса. Он может иметь параметры и может выполнять определенные операции, необходимые для инициализации объекта. При использовании конструктора для создания массива объектов необходимо определить его внутри класса и передать необходимые параметры. После создания экземпляра класса с помощью конструктора, объект добавляется в массив.

  • Шаг 1: Определите класс и его конструктор.
  • Шаг 2: Создайте массив объектов класса.
  • Шаг 3: Используйте конструктор класса для создания объектов.
  • Шаг 4: Добавьте объекты в массив.

Использование конструктора класса для создания объектов в массиве позволяет легко инстанцировать объекты, передавая необходимые значения через параметры. Кроме того, такой подход упрощает обработку и манипуляцию с данными объектов в массиве. Таким образом, создание массива объектов класса становится гибким и эффективным инструментом для решения различных задач программирования.

Использование конструктора класса для создания объектов

Использование конструктора класса для создания объектов

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

Инициализация массива объектов класса через цикл

Инициализация массива объектов класса через цикл

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *