Суть всего этого упражнения для меня определить существует ли член класса с определённым именем и определенного типа. Этакая интроспекция автогенерённых классов.
И ещё один вопрос, может кто знает существует ли способ написать такой Helper класс:
struct A;
struct B
{
A* a;
};
Helper<B>::type is the same as struct A
У меня как-то совсем никаких идей нет как это сделать...
Здравствуйте, Cruelty, Вы писали:
C>Суть всего этого упражнения для меня определить существует ли член класса с определённым именем и определенного типа. Этакая интроспекция автогенерённых классов.
C>И ещё один вопрос, может кто знает существует ли способ написать такой Helper класс: C>
C>struct A;
C>struct B
C>{
C> A* a;
C>};
C>Helper<B>::type is the same as struct A
C>
C>У меня как-то совсем никаких идей нет как это сделать...
Было дело, с похожим "уравнением" я пыли наглотался, убил уйму времени... короче, у меня не получилось
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Cruelty, Вы писали:
К>Прекрасно! Очередной баг в VC. К>VC8 вываливается в ICE, если ему разжевать по буквам и подсунуть вот такой код К>
Здравствуйте, Cruelty, Вы писали:
C>Суть всего этого упражнения для меня определить существует ли член класса с определённым именем и определенного типа. Этакая интроспекция автогенерённых классов.
C>И ещё один вопрос, может кто знает существует ли способ написать такой Helper класс: C>
C>struct A;
C>struct B
C>{
C> A* a;
C>};
C>Helper<B>::type is the same as struct A
C>
C>У меня как-то совсем никаких идей нет как это сделать...
это должно работать для любого призвольного класса? или допускаются вспомогательные метаданные, если второе то у меня получалось
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Здравствуйте, ollv, Вы писали:
O> это должно работать для любого призвольного класса? или допускаются вспомогательные метаданные, если второе то у меня получалось
Here I know type B and member name a. I want to deduce type A.
Any solution is more than welcome as at the very least it may bring some fresh ideas to consideration. Cheers
Здравствуйте, Cruelty, Вы писали:
C>Здравствуйте, ollv, Вы писали:
O>> это должно работать для любого призвольного класса? или допускаются вспомогательные метаданные, если второе то у меня получалось
C>Here I know type B and member name a. I want to deduce type A. C>Any solution is more than welcome as at the very least it may bring some fresh ideas to consideration. Cheers
So.. this sample with macros using realization in vc
But i don't have compiler in home, then i quick write but, don't compile this primitive sample ..but, this tehnology worked for auto binding iterabled fields , half step on hybernate in c++ and etc ^))
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Здравствуйте, ollv, Вы писали:
O>Здравствуйте, Cruelty, Вы писали:
C>>Здравствуйте, ollv, Вы писали:
O>>> это должно работать для любого призвольного класса? или допускаются вспомогательные метаданные, если второе то у меня получалось
C>>Here I know type B and member name a. I want to deduce type A. C>>Any solution is more than welcome as at the very least it may bring some fresh ideas to consideration. Cheers O>So.. this sample with macros using realization in vc O>
O> But i don't have compiler in home, then i quick write but, don't compile this primitive sample ..but, this tehnology worked for auto binding iterabled fields , half step on hybernate in c++ and etc ^))
struct registered_tag{}; -флаг зареганности филды
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Здравствуйте, ollv, Вы писали:
O>struct registered_tag{}; -флаг зареганности филды
Это, к сожалению, немного не то. Суть в том, что мне нельзя модифицировать автогенерированные классы, поетому регистрацию членов класса не получится сделать.
Здравствуйте, Cruelty, Вы писали:
C>Суть всего этого упражнения для меня определить существует ли член класса с определённым именем и определенного типа. Этакая интроспекция автогенерённых классов.
C>И ещё один вопрос, может кто знает существует ли способ написать такой Helper класс: C>
C>struct A;
C>struct B
C>{
C> A* a;
C>};
C>Helper<B>::type is the same as struct A
C>
C>У меня как-то совсем никаких идей нет как это сделать...
Please correct me if I am wrong, but this seems to verify whether a class derived from another class, rather then deduce the type of class' member by its name.
Also, isn't this fuctionality available in boost.TypeTraits library (is_base_of/is_same)?
Здравствуйте, Cruelty, Вы писали:
C>Здравствуйте, Caracrist,
C>Please correct me if I am wrong, but this seems to verify whether a class derived from another class, rather then deduce the type of class' member by its name.
C>Also, isn't this fuctionality available in boost.TypeTraits library (is_base_of/is_same)?
Да, не поинтересовался. Дают тот же результат.
Учитывая то, что тебе об этом известно, я, скорее всего, не правильно понял вопрос.
Здравствуйте, Cruelty, Вы писали:
C>Здравствуйте, ollv, Вы писали:
O>>struct registered_tag{}; -флаг зареганности филды
C>Это, к сожалению, немного не то. Суть в том, что мне нельзя модифицировать автогенерированные классы, поетому регистрацию членов класса не получится сделать.
раскрой суть автогенеренных классов. Если классы нельзя модифицировать(код класса), т.е. сторонняя библиотека тот-же трюк можно проделать через внешний аксессор
template <typename _Ty>
struct _Accessor;
class A { public: int m_A; };
//псевдокодtemplate<>
struct _Accessor<A>
{
...
decl_field(int, &A::m_A);
};
автоматизировать построение таких аксессоров на пребилдевете в студии. И с полями можно будет работать как с обычным списком значений... или нельзя модифицировать из-за константности — тогда реализовать конструктор принимающий мультитайплист
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Здравствуйте, ollv, Вы писали:
O> раскрой суть автогенеренных классов. Если классы нельзя модифицировать(код класса), т.е. сторонняя библиотека тот-же трюк можно проделать через внешний аксессор O> автоматизировать построение таких аксессоров на пребилдевете в студии. И с полями можно будет работать как с обычным списком значений... или нельзя модифицировать из-за константности — тогда реализовать конструктор принимающий мультитайплист
Модифицировать авто-генерённые классы -- себя не любить. Они же могут и перегенериться.
Твой подход по сути эквивалентен type traits, только немного более нестандартный. Пока что я реализовал все используя простые рабоче-крестьянские type traits, но хотелось бы найти общее решение, чтобы поддержка новых классов не требовала добавления нового кода.
Здравствуйте, Cruelty, Вы писали:
C>Здравствуйте, ollv, Вы писали:
O>> раскрой суть автогенеренных классов. Если классы нельзя модифицировать(код класса), т.е. сторонняя библиотека тот-же трюк можно проделать через внешний аксессор O>> автоматизировать построение таких аксессоров на пребилдевете в студии. И с полями можно будет работать как с обычным списком значений... или нельзя модифицировать из-за константности — тогда реализовать конструктор принимающий мультитайплист
C>Модифицировать авто-генерённые классы -- себя не любить. Они же могут и перегенериться.
C>Твой подход по сути эквивалентен type traits, только немного более нестандартный. Пока что я реализовал все используя простые рабоче-крестьянские type traits, но хотелось бы найти общее решение, чтобы поддержка новых классов не требовала добавления нового кода.
да если не автоматизировать постгенерейт на пребилд евенте(или автогенерация происходит по-другому?), то это будет проблемой
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.