Всем привет
Использую 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-ем, но можно и без.