http://codepad.org/etWqYnn3
Я работаю над некоторой формой системы рефлексии для C ++, несмотря на многих, кто предупреждал.То, на что я обращаю внимание, это набор интерфейсов IScope, IType, IMember, IMonikerClient и класс-обертка, который содержит вышеупомянутое, скажем, CReflexion.Игнорирование всего, кроме члена, который является важной частью, вот что я хотел бы сделать:
1) Экземпляр оболочки
2) Определить, какой тип должен использоваться
3) Тип экземпляра
4) Перегрузка () и [] для доступа к содержащемуся члену из внешнего (обертки) в коде так же легко, как это делается при использовании std :: vector
Я считаю, что с помощью 0x я могу переадресовать вызов метода любого типа для параметра.Однако я не могу динамически разыгрывать, потому что приведение не принимает переменную (если есть способы, о которых я не знаю!)
Я связал грубую идею выше.В настоящее время я использую оператор switch для обработки различных интерфейсов.Я хотел бы, и по очевидным причинам, хотел бы свернуть это.Я получаю ошибки совпадения типов в случаях переключения как причина вызова методов, компилируемых для каждого случая, когда только одно из трех работает для любого условия и генерируются ошибки компилятора.
Может кто-то предложить мне что-нибудь здесь?Это кроме того, чтобы придерживаться VARIANT: /
Спасибо!