Технический форум

Технический форум (http://www.tehnari.ru/)
-   C/C++/С# (http://www.tehnari.ru/f42/)
-   -   Массив указателей на объекты класса C++ (http://www.tehnari.ru/f42/t260986/)

Elaysa 11.09.2018 21:58

Массив указателей на объекты класса C++
 
Хелп. Помогите пожалуйста. Не могу понять задание
Создать массив указателей на объекты класса, описывающего насекомых
(количество ног, наличие крыльев, цвет и т.д.). Создать новый массив указателей на объекты с летающими насекомыми.


Была идея,
1. создать класс насекомое, описать объекты - ноги, крылья, цвет и т.д
2. сделать массив таких классов (вроде бы получилось)
А дальше с этими указателями ничего не понимаю. Указатель на класс нужно делать или как сделать к объектами, да еще и массив ????????
А если делать указатель на класс, то как потом вытащить оттуда наличие крыльев, это же объект???
Помогите пожалуйста

Попытки были, 2ой день сижу((
Header.h
Код:

#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;
};


/*бабочка - multicolor, 6 лап, 4 крыла
гусеница - multicolor, 6 лап, 0 крыльев
жук - зеленый, 6 лап, 4 крыла
клоп - коричневый, 6 лап, 0 крыльев
муравей - коричневый, 6 лап, 0 крыльев

*/

Source.cpp

Код:

#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 << "  цвет - " << color;
        std::cout << "  \n  ";
}

main.cpp

Код:

#include "stdafx.h"
#include <iostream>
#include "Header.h"
using namespace std;
int main()
{

        setlocale(LC_ALL, "Russian");

        int no = 3;
        int i;
        int w, p;
        nametype n;
        colortype c;

        int d;
        insect a[3];
        for (i = 0; i < no; i++)
        {

                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);
                }
                a[i].Setinsect(n, w, p, c);
        }
        for (i = 0; i < no; i++)
        {
                a[i].Print();
        }
return 0;
}



Часовой пояс GMT +4, время: 10:45.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.