|
|
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
blindedГде я тип привел? Обижаете. Ни одного оператора приведения НЕТ!!!ну было такое: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2006, 15:56 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
blindedВот вам новый опус(на скрепке)что-то мусор какой-то распаковывается... От меня вот тоже опус :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2006, 17:36 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
то есть вот так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2006, 17:46 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
maXmo blindedГде я тип привел? Обижаете. Ни одного оператора приведения НЕТ!!!ну было такое: Код: plaintext 1. 2. Не, батенька, это не приведение типа, это явная инстанциация!!! две большие разницы. Это я я явно сказал компилятору какой метод я хочу вызвать, потому что он гад такой при неявной подстановке (сам умничал) вызывал tm.start<Func2, ostream>. Ну за опус извините, видно загрузился криво, повторяю. Там одно файло поэтому просто gz без tar ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 11:17 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
maXmoто есть вот так Это, как мне кажется есть, то, что и надо было. Вообщем, буду юзать в этом виде: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 12:14 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
blindedТам одно файло поэтому просто gz без tarпонятно... Зачем в тар-то запаковано? Да ещё без расширения? В гз ведь можно без тара паковать. Эхх... линуксоиды... Учитесь, мля :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 15:44 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
Я по-поводу Делегата. Все здорово, но есль отдельные недостатки: 1) для подключения сторонних библиотек вме равно приходится писать... В случае моего последнего опуса, ежели продолжить специализацию TimerTaskT параметров эдак до 15(TYPELIST_15). То проблема закравается раз и навсегда, все сводится к декларации переменной нужного типа. 2) Приведение к типу void* и обратно. Может больно ударить, когда хочешь передать наследника вместо папы. Приходится писать конструкцию типа reinterpret_cast<void*>(static_cast<Parent*>(childPtr)) чтобы потом сделать reinterpret_cast<Parent*>(voidPtr) Ужас!!! этоже прочесть нельзя. И не говорите мне что в случае отсутствия множественного наследования все пройдет на ура, не пройдет! Сем налетел лет 6 назад, когда портировался под HP aCC. Забавный компилятор, у него папа в наследнике начинается со смещением в слово. Вот вспотел тогда код шерстить.... PS Я не linuxoid, я unixoid. За своб недолгую я попробовал SCO, Linux, Solaris, HP-UX (risk и ia64) и AIX PSS Спасибо Akh, чоть кому-то что-то пригодилось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 16:13 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
а зачем нужен reinterpret_cast<void*> ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 16:26 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
описанная тобой проблема, насколько я знаю, возникает только при приведении типов parent<->child ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 16:33 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2006, 17:31 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
кстати, TYPELIST_1(P1) - это макрос? Можно на него глянуть? Как он отреагирует на конструкцию с запятыми? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 11:17 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
Да, уж как в том анекдоте : Обосновал, но припохабнейше...Сейчас буду топтать, но сначала про reinterpret_cast - это привычка, я всегда когда из.в void* его пишу, оно при чтении глаз мозолит сразу видно где гадость... По-поводу приведения: 1) его можно просто забыть или сознательно не написать. Компилятор вам об этом ничего не скажет. Более того в большинстве случаев это сходит с рук. Согласитесь что множественное наслдование не часто встречается, а при одинарном большинство компиляторов сгенерят работающий код. Так у меня и было пока aCC не встретился. Сами понимаете мало приятного везде "работает", а на HP нет и отметим нигде в доках ничего о особенностях размещении объкта в памяти нет. Результат - несколько часов дебагере а потом еще куча времени чтобы прошерстить массу кода. 2) Привестись можно "неправильно". Что собственно вы и сделали. Приведение типа в стиле С в С++ - семантический маразм, никогда нельзя быть уверенным что приведется правильно. Не верите мне, отсылаю к гуру Дизайн и эволюция языка С++, там целая глава о приведении типа, вам читать с середины главы. В нашем конкретном случае вы нарушили права доступа к объекту, наследование то у вас private. А завтра выйдет новая версия библиотеки где автор уберет наследование и заменит его делегированием и вас перестанет работать, а компилятор ничего не скажетю А не првы были вы ибо автор библиотеки ничего с публичным интерфейсом не сделал.. Кстати если бы вы написали static_cast то хороший компилятор поймал бы вас за руку. GCC таким не оказался( у меня 3.2) Пришлось intel доставать, он поймал за руку. А так я не против void*, просто если можно без него обойтись, надо обходится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 12:09 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
blindedА завтра выйдет новая версия библиотеки где автор уберет наследование и заменит его делегированием и вас перестанет работать, а компилятор ничего не скажет. А не првы были вы ибо автор библиотеки ничего с публичным интерфейсом не сделал.это однозначно смена интерфейса (если в терминах COM). И это уже не относится к первоначально указанной тобой проблеме передачи парента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 13:59 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
интерфейс - это не просто список методов, это вся иерархия классов. К тому же, если ты на этих шаблонах напишешь библиотеку, тебе придётся поставлять её в сорсах, что влечёт за собой такой момент, что при любом изменении реализации TimerTaskT, тебе придётся перекомпилировать все модули, где он используется, а как ты помнишь, Akh очень не любит это делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 16:08 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
maXmoAkh очень не любит это делать. Этточно. ;) PS: в обсуждение не вникал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 17:28 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
AkhPS: в обсуждение не вникал.если нужна мощная защита от дурака, рекомендуют использовать шаблоны вместо void* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 17:48 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
на случай, если ломает писать по делегату на каждую сигнатуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 17:51 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
По-моему пора завязывать. Решать все равно Akh_у. А тема высосана до дна, пусть лучше Akh еще чего-нибудь спросит у него ъто здорово получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 19:26 |
|
||
|
Почему нельзя передавать параметром метод класса?
|
|||
|---|---|---|---|
|
#18+
blindedПо-моему пора завязывать. Решать все равно Akh_у. А тема высосана до дна, пусть лучше Akh еще чего-нибудь спросит у него ъто здорово получается. Вообще, то я уже давно решил как буду делать, сообщений этак 30 назад. Но читать топик интересно. :) Спрошу, спрошу. Когда вопросы будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2006, 09:50 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33944012&tid=2030627]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
170ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 506ms |

| 0 / 0 |
