У меня есть следующая проблема, и я надеюсь, что большое сообщество может мне помочь.
Если у меня есть один класс:
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
,
Как я могу проверить, какая это производная и как я могу получить данные об объектах? Я имею в виду, что это должно быть возможно, потому что они оба являются производными от одного.
Если вам нужен список:
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/