Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
0 / 0 / 1
Регистрация: 03.12.2016
Сообщений: 83

Создать массив указателей на объекты класса, описывающего насекомых

11.09.2018, 18:15. Показов 5076. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать массив указателей на объекты класса, описывающего насекомых (количество ног, наличие крыльев, цвет, название.). Создать новый массив указателей на объекты с летающими насекомыми.

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

Создаю класс насекомое с конструктором и пытаюсь как-то вывести это

Header.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define insect_hpp
#include <iostream>
using namespace std;
 
enum colortype { зеленый = 1, коричневый, мультицвет };
enum nametype { жук = 1, клоп, муравей, гусеница, бабочка };
class insect
{
public:
    insect();
    
    void Print();
 
    unsigned insect::Setinsect(nametype name, int paw, int wing, colortype color);
private:
    
    int paw; //количество лап
    int wing; // количество крыльев
    colortype color; //цвет 
    nametype name;
};
Source.cpp
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
30
#include "stdafx.h"
#include "Header.h"
using namespace std;
 
insect::insect()  //дефолтный конструктор
{
    this->name = nametype(05);
    this->paw = 6;
    this->wing = 4;
    this->color = colortype(03);
    
}
unsigned insect::Setinsect(nametype name, int paw, int wing, colortype color) //тут планировал добавить проверки
{
    int flag = 0;
    this->name = name;
    this->paw = paw;
    this->wing = wing;
    this->color = color;
    return flag;
 
}
 
void insect::Print() //вывод на экран
{
    std::cout <<"Название - "<< name;
    std::cout <<"  крыльев - "<< wing;
    std::cout <<"  лап - "<< paw;
    std::cout << "  цвет - \n"<<color;
}
и main.cpp
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include <iostream>
#include "Header.h"
using namespace std;
int main()
{
    
    setlocale(LC_ALL, "Russian");
    insect one_insect;
    
    int w,p;
    nametype n;
    colortype c;
    
    int d;
    cout << "# название";
    cin >> d;
    if (d == 1) {
        n = nametype(1);
    }
    if (d == 2) {
        n = nametype(2);
    }
    if (d == 3) {
        n = nametype(3);
    }
    if (d == 4) {
        n = nametype(4);
    }
    if (d == 5) {
        n = nametype(5);
    }
    cout << "крылья ";
    cin >> w;
    cout << "лапы ";
    cin >> p;
    int d2;
    cout << "цвет ";
    cin >> d2;
    if (d2 == 1) {
        c = colortype(1);
    }
    if (d2 == 2) {
        c = colortype(2);
    }
    if (d2 == 3) {
        c = colortype(3);
    }
    one_insect.Setinsect(n, w, p, c);
    one_insect.Print();
        return 0;
}
По идее мне надо создать массив насекомых, т.е пользователь вводит параметры и они сохраняются в новое насекомое, как можно это реализовать?
А потом уже массив указателей на объекты класса. Это вообще пока не понимаю как и зачем

Помогите пожалуйста, как написать этот массив указателей на объекты, хоть немного. Заранее благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.09.2018, 18:15
Ответы с готовыми решениями:

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

Можно ли динамически выделить память под массив указателей, на объекты класса?
Прошу прощения если не правильно назвал вопрос. Не знаю как правильно сформулировать. Можно ли строчку VisualizationTools* VT; заменить...

Как создать массив указателей на объекты
Задача состоит в создании многофайлового проекта. Каждый класс находится в отдельном файле. В файле main.cpp нужно создать массив...

23
12.09.2018, 11:26
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
зачем вы его предлагаете как решение? :)
потому что он работает.

0
12.09.2018, 11:40

Не по теме:

Цитата Сообщение от _stanislav Посмотреть сообщение
потому что он работает.
А кто вам это сказал, ваш компилятор? :)

А с чего вы взяли, что у ТС вообще Visual Studio? (в других компиляторах этот код не компилируется)
А с чего вы взяли, что у ТС та же версия Visual Studio, что и у вас, и используются те же настройки компиляции, что и у вас?
А с чего вы взяли, что ТС будет использовать ваш код именно таким предложенным образом?
А с чего вы взяли, что преподаватель у ТС не станет обращать на это внимание?

Много вопросов.
И еще, видит бог, я этого не хотел, но раз уж вы признались, что сознательно нарушаете правила форума, то наверное об этом тоже стоит с вас спросить.
22. Запрещено намеренно вводить других пользователей форума в заблуждение.

0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
12.09.2018, 11:43
Цитата Сообщение от _stanislav Посмотреть сообщение
зачем вы его предлагаете как решение?
это не решение а простой пример, рабочий в конкретно данном случае, и этот пример отражает суть (как работать с объектом по указателю), то что он не грамотный с точки зрения языка я согласен, и ТС конечно не должен использовать подобные a[0] = &Test(); махинации в реальном коде, ТС к этому возможно сам придет когда разберется с rvalue и lvalue.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
12.09.2018, 15:57
Цитата Сообщение от _stanislav Посмотреть сообщение
нужно уметь слушать не только себя
Он прав. Ваш код заведомо ошибочен и то, что у Вас это собралось - это просто специфика компилятора.
Код собирался в MSVC++ я полагаю, потому как там взять адрес временного объекта прокатит.
А вот в том же gcc или clang будет ошибка компиляции, как и должно.

Ваш код можно переписать так:
C++
1
2
3
4
5
6
7
Test * proxy(Test && t)
{
    return &t;
}
 
//...
    a[0] = proxy(Test());
Теперь этот код не содержит синтаксических или семантических ошибок, и соберется.
Правда, он всё еще приводит к неопределенному поведению, но это уже другой вопрос.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2018, 15:57

Виртуальные функции (создать массив указателей на объекты трех классов)
Задание: создать массив указателей на объекты трех классов. Метод Show почему-то не переопределяется. В данном коде вводится 3 элемента в...

Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса
Всем привет. Есть условие задачи: Дан базовый класс Base у которого есть метод my_name, метод выводит сообщение This is Base class. От...

QSet указателей на объекты класса, сортированный по полю класса
Здравствуйте. Возьмём тестовый класс: class TEST { public: TEST(); QString name; } Допустим у меня есть...

Вектор указателей на объекты класса
Добрый вечер! Есть базовый класс Place от него наследуется класс City. Мне нужно реализовать функцию добавления объекта в вектор и...

Хранение в контейнере указателей на объекты класса
Здравствуйте, очень прошу помочь разобраться: У меня есть учебная задача: Я хочу решить ее без использования баз данных, так...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru