Массив указателей на объекты класса 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;
}
|