LINUX.ORG.RU

Кто шаоит в С++


0

0

Недавно напоролся на фрагмент кода, (open office)
кто нибудь знает чего это такое?

>template <class SRC, class MEMBER_TYPE>
>class TMemberInfo : public MemberInfo<SRC>
>{
> public:
> typedef MEMBER_TYPE SRC::* ptr2member;
>
> TMemberInfo(
> ptr2member i_mpOriginalData );
> ~TMemberInfo();
>
> private:
> virtual DYN Data & do_CreateDataFor(
> const SRC & i_rSrc ) const;
> // DATA
> ptr2member mpOriginalData;
>};

Интересует строка "typedef MEMBER_TYPE SRC::* ptr2member;"

Зарание благодарен :)

★★★★

Чё именно то интересует?

Обычный указатель на поле данных класса.
Кто-то извращаеться невыносимым образом.

P.S. Шаблоны must die.

anonymous
()

Угу. Просто указатель на поле данных типа MEMBER_TYPE класса SRC. Потом это дело можно использовать так:


ptr2member myptr = &SCR::member;
SRC * mysrc_ptr = new SRC();
SRC mysrc;
// ....
mysrc_ptr->*myptr = value;
mysrc.*myptr = value;


Ну, таким же макаром определяются указатели на методы классов. Изврат, конечно, делать такое... Но иногда надо. И почему шаблоны муст дие? Я этого не понимаю...

JekLove
()

Все ясно, большое спасибо. (Век живи век учись)



PS. А шаблоны вещ полезная

zaz ★★★★
() автор топика

"P.S. Шаблоны must die." Я не люблю оскорблять незнакомых людей, но не могу удержаться... Друг, ты вообще программировал когда-нибудь или только книжки и форумы читал ? Ни одно из средств С++ (о других я зыках я даже не говорю) не может сравниться по выразительной мощи и по полезности с шаблонами. Непонимание их возможностей - основная причина критики С++.

anonymous
()
Ответ на: комментарий от anonymous

Пену-то у рта оботри, 'друг' ...

> Я не люблю оскорблять незнакомых людей

Оскорблений особых я не увидел. Только пару обоснованных предположений.

> Непонимание их возможностей - основная причина критики С++.

Я люблю С++ и с шаблонами и без шаблонов. У шаблонов в С++ есть своя (весьма небольшая) ниша и не ... пихать их куда надо и куда НЕ надо.

Мода проходит, и чем тогда поклонники шаблонов будут оправдывать свой неудобочитаемый код и бинарники в десятки метров?

P.S. Все imho и с долей шутки.

anonymous
()

Ок, можем начать дискуссию :-).

Бинарники в десятки метров ? Основная причина здесь не шаблоны, а кривые руки. MFC - вот я ркий пример. А WTL - построена на шаблонах и бинарники намного меньше.

А по поводу кода... Неужели цикл выглядит лучше, чем вызов for_each, например ?

anonymous
()
Ответ на: комментарий от anonymous

> MFC - вот я ркий пример.

Яркий пример чего? Непонимание авторами MFC даже простейших концепций ООД/ООП муссируется уже лет 7-8. Да и шаблоны были в нее воткнуты только с появлением моды на них. (Раньше как-то обходились обычными контейнерами).

> Неужели цикл выглядит лучше, чем вызов for_each, например ?

Использование цикла или for_each к собственно шаблонам никакого отношения не имеет. А вот почитать заголовки, допустим, STL - классное развлечение.

> Ок, можем начать дискуссию

Лучше на talks ;)


anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.