|
|
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
Про лаконичность я понял. kolobok0 // хотя мона достучаться и так например (если проблемы с доступом)... value GetValue(void) { return Type::GetData(); }; // а это метод который // должен существовать у созданного по шаблону класса. И пущай // инстанцированный класс заботиться о наполнении ентого грёбанного // value ! Все стандарнные типы нужно заключить в классы с методом GetData, это тоже дополнительная работа. Понятное дело template зделает оновную работу , но методу GetData создавать придется для каждого типа. Ваш подход отличется от моего только тем что вы для поиска нужного типа пользуетесь таблицей виртуальных методов я же if ((s_type&TYPE_INT)==TYPE_INT) Может я чегото недопонимаю, но Ваш подход мне не нравится. всеравно нужно писать проверку и дополнять value. kolobok0 ЗЫ Про двойную передачу за место свитчей - не буду, лучше уж почитайте книжку :) Какую ? Если не секрет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2006, 20:53 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
onstat-Все стандарнные типы нужно заключить в классы с методом GetData, это тоже дополнительная работа. Понятное дело template зделает оновную работу , но методу GetData создавать придется для каждого типа. .........Какую ? Если не секрет. 1) нет...метод GetData одын... см. пример...он оперирует классом вэлью и это от каждой типизации НЕ ЗАВИСИТ... 2) ссылку на книгу и название - я давал выше...там основные идеи есть... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 13:44 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
ДимаДВ По поводу сабжа, нужно идти и читать книги, потому как никаким нетривиальным тут и пахнет. Вам уже ответили что для решения задачи в вашей постановке достаточно использовать какой-либо вариант (например, std::vector<Variant> в VCL) и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 15:45 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
kolobok0 onstat-Все стандарнные типы нужно заключить в классы с методом GetData, это тоже дополнительная работа. Понятное дело template зделает оновную работу , но методу GetData создавать придется для каждого типа. .........Какую ? Если не секрет. 1) нет...метод GetData одын... см. пример...он оперирует классом вэлью и это от каждой типизации НЕ ЗАВИСИТ... 2) ссылку на книгу и название - я давал выше...там основные идеи есть... (круглый) Посмотрел еще раз. Вот оно, ошибся, sory, переписывать будем value GetValue(void) для каждого типа. И дополнять класс вэлью операторами приведения для каждого типа. Интересно какое поведение вы ожидаете от следющего кода Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Хотелось бы узнать кто должен разрулить эту ситуацию? 1. Компилятор. 2. Специальный код (Где он должен вызываться в вашем примере? и как вы собираетесь определить что эта ситуация произоша). 3. Програмист должен всегда все помнить. 4. Другой Ваш вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 15:58 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
onstat- Код: plaintext 1. Хотелось бы узнать кто должен разрулить эту ситуацию? 1. Компилятор. 2. Специальный код (Где он должен вызываться в вашем примере? и как вы собираетесь определить что эта ситуация произоша). 3. Програмист должен всегда все помнить. 4. Другой Ваш вариант. отвечаю... 1) если Вы заметили, у производного типа должен быть метод возвращающий value. В котором и живут Ваши данные... 2) GetVal() зовёться у парента... тот вызывает сынка, тот в свою очередь у типизированного класса указанный выше метод, который возвращает value. 3) value с права, с лева у Вас тип известный... На сцену выползают операторы у данного класса (value). 4) подразумевается, что класс value знает такие весчи как ликвиден/не ликвиден, что возвращать если не ликвиден... надеюсь ответил на Ваш вопрос (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 16:10 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
funikovyuri ДимаДВ По поводу сабжа, нужно идти и читать книги, потому как никаким нетривиальным тут и пахнет. Вам уже ответили что для решения задачи в вашей постановке достаточно использовать какой-либо вариант (например, std::vector<Variant> в VCL) и все в VARIANT не определены логические и арифметические операции поэтому например так нельзя: VARIANT var1, var2; var1.intVal = 1; var2.fltVal = 1.1; if(var1 < var2) //запрещено, а мне надо чтобы можно было Я слышал что в COM есть структура типа VARIANT которая это позволяет кто нидь знает про нее??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 07:15 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
ДимаДВ Вот интересно, а если в одном из вариантов строка, что ваша команда сравнения должна вернуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 11:36 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
funikovyuri ДимаДВ Вот интересно, а если в одном из вариантов строка, что ваша команда сравнения должна вернуть? да эта проблема ну думаю выдавать исключения для несовместимых типов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 11:47 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
ДимаДВ Ж) а может тогда уж создать вектор для самого "большого" типа и все :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 12:05 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
to ДимаДВ есть ещё CComVariant и _variant_t ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 12:39 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
Tracerto ДимаДВ есть ещё CComVariant и _variant_t да это еще один из вариантов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 14:50 |
|
||
|
Не тривиальное использование шаблонов
|
|||
|---|---|---|---|
|
#18+
Tracerto ДимаДВ есть ещё CComVariant и _variant_t в C++ используем CComVariant и там можно делать например сравнение CComVariant а он уж сам внутри знает какие типы сравнивать например int x = 1; CComVariant var1 = x; double y = 1.11; CComVariant var2 = y; if(var1 > var2) .................. а теперь тоже самое нужно сделать в C# Как? - там нет возможности сравнивать например объекты типа object только если на равенство ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2006, 10:36 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2031824]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 483ms |

| 0 / 0 |
