Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 11.09.2018, 21:58   #1 (permalink)
Elaysa
Новичок
 
Регистрация: 19.05.2017
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Unhappy Массив указателей на объекты класса 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;
}
Elaysa вне форума   Ответить с цитированием

Старый 11.09.2018, 21:58
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Схожие темы должны хорошо обсуждаться

Ввести массив из n чисел, разбить массив на две примерно равные части и вывести числа
Нужно сравнить два массива указателей типа char
обнаружены объекты
Объекты

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.