• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Массив указателей на объекты класса C++

  • Автор темы Автор темы Elaysa
  • Дата начала Дата начала

Elaysa

Ученик
Регистрация
19 Май 2017
Сообщения
2
Реакции
0
Баллы
0
Массив указателей на объекты класса 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;
}
 
Назад
Сверху