LINUX.ORG.RU

Вопрос по созданию класса [C++][Полиморфизм]

 


0

1

Есть класс DObject

class DObject
    {
    public:
	DObject() :
	    visible(1), x(0), y(0)
	    {
	    }
	virtual ~DObject();
    public:
	bool visible;
	float x, y;
    };
Хочу написать класс для выделения памяти под этот класс и производные от него
Вроди как начал
class DObjects
    {public:
	DObjects() :
	    count(0)
	    {
	    }
     private:
	virtual ~DObjects();
	DObject *Objects;
	int count;
    };
если бы надо было добавлять в массив только элементы только класса DObject, то все ничего, но дело в том что DObject нужен мне только для наследования другими классами его свойств и тут возник вопрос: как правильно написать метод класса котрый будет добовлять в массив унаследованый элемент унаследованого класса ? Неужили придется создавать для каждого нового класса-наследник, метод для добовление его в масссив ?
(Не надо сильно бить, я только учусь :))

★★★★★

ты где такой стиль оформления кода взял?

П.С. в текст не вчитывался - возможно тебе нужен std::vector

aho
()
Ответ на: комментарий от aho

> ты где такой стиль оформления кода взял?

Очевидно, там была лютая солянка табов и пробелов. А потом перестала.
Либо автор первокурсник, они пишут именно так.

geekless ★★
()
Ответ на: комментарий от aho

Это я наскоро набрасал нв форум :)

deterok ★★★★★
() автор топика
Ответ на: комментарий от geekless

2 курсник, но пишу так как в eclipse по умолчанию задано :)

deterok ★★★★★
() автор топика

> Хочу написать класс для выделения памяти под этот класс и производные от него

Телепаты напряглись.

DObject *Objects;

int count;



Ты изобретаешь vector? smart pointer? или еще что?

geekless ★★
()

>Неужили придется создавать для каждого нового класса-наследник, метод для добовление его в масссив ?

Нет, метод понадобится один, и принимать он будет указатель на DObject.

Но при этом массив объектов Objects должен быть типа DObject** - а почему так - это тебе домашнее задание на подумать.

Ах да, если ты решил работать с набором объектов, объеденив их в массив - это херовый выбор. Лишний геморрой будет с добавлением (реаллоцирование) / удалением (ваще мясо) элементов туда. Так что лучше не изобретать велосипед, а использовать то, на что в этом треде уже сказали - std::vector либо std::list, по ситуации.

yoghurt ★★★★★
()

Хочу написать класс для выделения памяти под этот класс и производные от него

чувак, я нихрена не понял что ты хотел сказать, так что давай начнём с задачи которую ты решаешь

shty ★★★★★
()
Ответ на: комментарий от yoghurt

Спасибо понял, что то сразу не подумал, что за меня все написано уже, еще раз спасибо

deterok ★★★★★
() автор топика

> Неужили придется создавать для каждого нового класса-наследник, метод для добовление его в масссив ?

Джеф Элджер «С++ для профессионалов» (мог перепутать название - по паамяти), читать на ночь. А как Вы с-но хотели то? Тип создаваемого класса определяется какими то параметрами, и да, для каждого типа наследника в коде так или иначе придется написать new. Можете сгрести все эти mew в одну порождающую ф-ю, которая будет решать на основе своих аргументов кого создавать.

AIv ★★★★★
()
Ответ на: комментарий от DELIRIUM

ЕГЭ, по реалу он у меня на 2, по егэ чуть не пять (просто когда я пишу, то не думаю, а когда задание состоит в том, что бы правильно написать, это другое дело)

deterok ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.