Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2018, 20:50   #1
KariLex
Пользователь
 
Регистрация: 01.04.2017
Сообщений: 27
Печаль Массив указателей на объекты класса 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;
}
KariLex вне форума Ответить с цитированием
Старый 11.09.2018, 23:12   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Т.е. вы про new ничего не слышали?
p51x вне форума Ответить с цитированием
Старый 12.09.2018, 17:04   #3
KariLex
Пользователь
 
Регистрация: 01.04.2017
Сообщений: 27
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Т.е. вы про new ничего не слышали?
Тема указатели, с new нельзя
KariLex вне форума Ответить с цитированием
Старый 12.09.2018, 17:10   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Чего? Что по вашему делает new?
p51x вне форума Ответить с цитированием
Старый 12.09.2018, 17:56   #5
KariLex
Пользователь
 
Регистрация: 01.04.2017
Сообщений: 27
По умолчанию

Выделение памяти. Я не могу использовать new при решении этой задачи
KariLex вне форума Ответить с цитированием
Старый 12.09.2018, 20:04   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ясно, ну продолжайте заниматься фигней. Только потом не рассказывайте, что вам на форуме сказали именно так делать.

А теперь по вопросам:
Цитата:
Сообщение от KariLex Посмотреть сообщение
Указатель на класс нужно делать или как сделать к объектами, да еще и массив ????????
Что вызывает непонимание? Массив указателей это также как массив интов... Или вы не можете взять адрес объекта? Есть такая закорючка &.

Цитата:
Сообщение от KariLex Посмотреть сообщение
А если делать указатель на класс, то как потом вытащить оттуда наличие крыльев, это же объект???
Обычно. Есть такая операция разыменование. А еще можно через стрелку сразу. И указатель это не объект.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в массив объекты класса (vector) vik_21 Помощь студентам 0 27.11.2013 06:38
Java!В программе создать одиночные объекты и массив объектов класса и вызвать методы. Andros96 Помощь студентам 0 17.11.2013 15:41
Как создать метод класса, возвращающий объекты (поля класса) разных типов frosich Общие вопросы Delphi 3 01.03.2013 19:29
вектор указателей на экземпляры класса Aldegid Общие вопросы C/C++ 9 06.05.2012 01:15
массив указателей на методы класса? cout Общие вопросы C/C++ 2 08.05.2008 09:43