powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не тривиальное использование шаблонов
12 сообщений из 37, страница 2 из 2
Не тривиальное использование шаблонов
    #33544812
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про лаконичность я понял.

kolobok0

// хотя мона достучаться и так например (если проблемы с доступом)...
value GetValue(void) { return Type::GetData(); }; // а это метод который
// должен существовать у созданного по шаблону класса. И пущай
// инстанцированный класс заботиться о наполнении ентого грёбанного
// value !


Все стандарнные типы нужно заключить в классы
с методом GetData, это тоже дополнительная работа.
Понятное дело template зделает оновную работу ,
но методу GetData создавать придется для каждого типа.

Ваш подход отличется от моего только тем что вы
для поиска нужного типа пользуетесь таблицей виртуальных методов
я же

if ((s_type&TYPE_INT)==TYPE_INT)


Может я чегото недопонимаю, но Ваш подход мне не нравится.
всеравно нужно писать проверку и дополнять value.

kolobok0

ЗЫ
Про двойную передачу за место свитчей - не буду, лучше уж почитайте книжку :)


Какую ? Если не секрет.
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33546275
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat-Все стандарнные типы нужно заключить в классы
с методом GetData, это тоже дополнительная работа.
Понятное дело template зделает оновную работу ,
но методу GetData создавать придется для каждого типа. .........Какую ? Если не секрет.

1) нет...метод GetData одын... см. пример...он оперирует классом вэлью и это от каждой типизации НЕ ЗАВИСИТ...

2) ссылку на книгу и название - я давал выше...там основные идеи есть...


(круглый)
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33546847
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДимаДВ

По поводу сабжа, нужно идти и читать книги, потому как никаким нетривиальным тут и пахнет.

Вам уже ответили что для решения задачи в вашей постановке достаточно использовать какой-либо вариант (например, std::vector<Variant> в VCL) и все
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33546904
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
xru<z> Z;
xru<int> I;
xru<double> D;

base* pb1 = ....;
base* pb2 = ....;

бла-бла-бла

потеряли типизацию...
pb1=&I;
pb2=&D;

double f = pb1->GetVal();

int k = pb2->GetVal();  //Интересно  что здесь произойдет?


Хотелось бы узнать кто должен разрулить эту ситуацию?
1. Компилятор.
2. Специальный код (Где он должен вызываться в вашем примере? и как вы собираетесь определить что эта ситуация произоша).
3. Програмист должен всегда все помнить.
4. Другой Ваш вариант.
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33546944
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat-
Код: plaintext
1.
int k = pb2->GetVal();  //Интересно  что здесь произойдет?

Хотелось бы узнать кто должен разрулить эту ситуацию?
1. Компилятор.
2. Специальный код (Где он должен вызываться в вашем примере? и как вы собираетесь определить что эта ситуация произоша).
3. Програмист должен всегда все помнить.
4. Другой Ваш вариант.

отвечаю...
1) если Вы заметили, у производного типа должен быть метод возвращающий value. В котором и живут Ваши данные...
2)
GetVal() зовёться у парента...
тот вызывает сынка, тот в свою очередь у типизированного класса указанный выше метод, который возвращает value.
3) value с права, с лева у Вас тип известный... На сцену выползают операторы у данного класса (value).
4) подразумевается, что класс value знает такие весчи как ликвиден/не ликвиден, что возвращать если не ликвиден...

надеюсь ответил на Ваш вопрос
(круглый)
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33547940
ДимаДВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri ДимаДВ

По поводу сабжа, нужно идти и читать книги, потому как никаким нетривиальным тут и пахнет.

Вам уже ответили что для решения задачи в вашей постановке достаточно использовать какой-либо вариант (например, std::vector<Variant> в VCL) и все

в VARIANT не определены логические и арифметические операции поэтому например так нельзя:

VARIANT var1, var2;
var1.intVal = 1;
var2.fltVal = 1.1;
if(var1 < var2) //запрещено, а мне надо чтобы можно было

Я слышал что в COM есть структура типа VARIANT которая это позволяет
кто нидь знает про нее???
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33548491
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДимаДВ

Вот интересно, а если в одном из вариантов строка, что ваша команда сравнения должна вернуть?
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33548528
ДимаДВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuri ДимаДВ

Вот интересно, а если в одном из вариантов строка, что ваша команда сравнения должна вернуть?

да эта проблема
ну думаю выдавать исключения для несовместимых типов
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33548598
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДимаДВ

Ж) а может тогда уж создать вектор для самого "большого" типа и все :)
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33548752
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ДимаДВ
есть ещё CComVariant и _variant_t
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33552329
ДимаДВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tracerto ДимаДВ
есть ещё CComVariant и _variant_t

да это еще один из вариантов
...
Рейтинг: 0 / 0
Не тривиальное использование шаблонов
    #33586057
ДимаДВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 только если на равенство
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не тривиальное использование шаблонов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]