Как я могу проверить, какие производные это одного класса и как я могу работать с их структурой в списке

У меня есть следующая проблема, и я надеюсь, что большое сообщество может мне помочь.
Если у меня есть один класс:

class one
{
private:
int data;

public:
one();
void safe();
void load();
};

А затем 2 производных класса первого класса:

class two: public one
{
private:
int data2;
public:
two();
safe();
load();
};

class three: public one
{
private:
int    data3;
string data4;
public:
three();
void safe();
void load();
};

И теперь я должен хранить данные в этих классах. Объект классов хранится в списке. И один элемент этого списка может быть в этом примере одним объектом второго или третьего класса. Теперь, если мне нужно сохранить содержимое списка в файл, мне нужно получить данные data2 или если у меня есть другой объект, который мне нужен data3 а также data4,

Как я могу проверить, какая это производная и как я могу получить данные об объектах? Я имею в виду, что это должно быть возможно, потому что они оба являются производными от одного.

0

Решение

Если вам нужен список:

std::list<one*> myList;

если вам нужна коллекция, как массив

std::vector<one*> myVec;

Вы можете увидеть более подробную информацию о том, как вставлять и обрабатывать данные из списка std::list Вот : http://www.cplusplus.com/reference/list/list/

За std::vector<> Вот : http://www.cplusplus.com/reference/vector/vector/

На ваш второй вопрос:

Как я могу проверить, какая это производная и как я могу получить данные
объекты?

Так как вы уже создали наследование и собираетесь хранить объекты как указатели в контейнере, как std::list или же std::vectorСистема может идентифицировать динамический тип объектов с помощью полиморфизма и вызывать функции в зависимости от типа объекта. Более подробная информация доступна здесь: http://www.cplusplus.com/doc/tutorial/polymorphism/

0

Другие решения


По вопросам рекламы [email protected]