Универсальная структура данных
От: CEMb  
Дата: 24.02.14 06:02
Оценка:
Всем привет

Использую MS VC++ 2010.

Хочется чего-то похожего на динамические классы в JScript, или как они называются?

Хочется сделать свойство:
template<class T> class CProp
{
    std::string          m_strName;
    T                    m_Value;
    std::vector<CProp*>  m_Props;
//...
};


т.е. дерево свойств.

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

имя      тип     значение
---------------------------
Caption  string  "Something"
Count    INT64   123
Smth1    CSmth   (...)

и так далее

Кроме того, хочется получить быстрый доступ к свойствам, приближенно к obj.Caption.Subcaption, как это в JScript

Вся эта штука, по идее, удачно укладывается в XML, может быть есть готовые средства (без доп. инсталляции софта и активыксов!), код, которыми можно загрузить в некий объект xml-ку и потом просто дёргать методы, чтобы получать содержимое тегов? Судя по задаче, такое уже должно быть реализовано много раз.

Раньше я подобную задачу решал через классы-шаблоны, отнаследованные от интерфейса, указатели на который я и складывал в вектор. Но тут проблема была в том, что интерфейс ничего не знает о типах параметров, значения которых надо было устанавливать-считывать. Частично проблема решалась тем, что шаблоны сами работали с целевым источником-приёмником ресурсов, частично тем, что я работал напрямую с экземплярами этих классов, и частично за счёт некого универсально класса строки, который кастовался во всё подряд, и интерфейс просто устанавливал-возвращал строчное значение. Но это как-то не очень красиво получается
В общем, хочется универсальности, простоты и удобства. Лучше с xml-ем, но можно и без.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.