Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GKosh
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 9
#1

Карта свойств класса - C++

28.02.2012, 10:55. Просмотров 749. Ответов 0
Метки нет (Все метки)

Необходимо было реализовать сериализацию для иерархии собственных классов, сделал так:
Базовый класс всей иерархии имеет динамический список структур вида

struct PROPERTY {
const char* sProperty; // имя переменной - члена класса
void** pProperty; // указатель на переменную
SERIA_TYPE Type; // метка типа переменной (int, float, string, object)
};

по идее - это как бы карта свойств объекта, базовый класс реализует так же метод:
void Register_Property (const char* a_name, void* a_pointer, SERIA_TYPE a_type)
для заполнения этого списка указателями на переменные.
Каждый класс иерархии в своем конструкторе регистрирует свои переменные этой функцией, после чего наследованные методы базового класса Serialize/Deserialize уже спокойно записывают, считывают заполненный список указателей.
Таким образом практически вся реализация ser/deser находится только в базовом классе.
Вопрос - может быть что-нибудь есть дурного в таком подходе, пока я его еще не отладил но у меня имеются некоторые сомнения в его надежности. Возможно есть проверенные методы о которых я, к сожалению, не в курсе.

Заранее благодарен,
Константин.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 10:55     Карта свойств класса
Посмотрите здесь:

Получение списка public свойств класса - C++
Имеется набор различных классов с различными количествами публичных текстовых свойств. Мне нужно эти поля редактировать. Как получить...

Структура, как одно из свойств класса - C++
Не могу разобраться, как обращаться к полям структуры, которая является свойством класса. В куске кода описание класса и шаблоны...

Нужен пример неизменяемого класса и класса от которого нельзя наследоваться - C++
Здравствуйте! Нужно привести пример неизменяемого класса и класса от которого нельзя наследоваться.

Наследование свойств - C++
Хотелось бы описать 1 функцию в базовом классе типа: void func(){ procedure( a ); } , где "a" представляет собой что-то типа: struct{...

Составьте программу, выводящую на экран сообщения об отличниках класса, о средней успеваемости учащихся класса - C++
Опишите, используя структуру записи, школьный журнал. Предусмотрите в записи поля для хранения информации о фамилии учащегося, предмете,...

Разное значение переменной класса, в разных экземплярах класса - C++
Вот примерный код: class Test { private: static int countC; static int countD; void initWeight(){ double a; ...

Вызов функций класса Dictionary функциями дружественного класса - C++
Функции класса Tree используют функции дружественного класса Dictionary,но вылетают ошибки,не находятся определения функций класа...

Статическое поле класса, имеющее тип того же класса - C++
Всем доброго времени суток. Как известно, поля класса могут быть ссылками, либо указателями на тот же класс, в котором объявляются, но не...

WxDev C++ Инспектор Свойств - C++
Вопрос по инспектору свойств: Почему у фрейма нельзя изменить фон? Как в коде, например увеличить высоту на 1пиксель? что это за...

Использование свойств полиморфизма - C++
Нужна помощь. Сгенерируйте абстрактный класс типа фигура, создайте производные от него классы типа пятиугольник, прямоугольник. В классах...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru