Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2012, 22:21   #21
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Не понимаю, почему вы думаете, что это медленно...
Для неполиморфных типов делается return type::gGLobalInstance, для полиморфных - return type::vtable->gGlobalInstance - где здесь потеря скорости?

Вы делаете то же самое, только через метод, и все надо делать самому вручную. Ваш выигрыш только в том, что есть контроль над тем, что содержит type_info, вот и все.
waleri вне форума Ответить с цитированием
Старый 01.08.2012, 08:29   #22
mf_fun_mf
Пользователь
 
Регистрация: 20.07.2012
Сообщений: 11
По умолчанию

Версия с шаблоном отлично подходит, typeid правильно определяет тип!
Ура!
Кто-то говорил про поставить rtti в параметрах компилятора - видимо у меня это по дефолту - typeid и так отлично работает...
mf_fun_mf вне форума Ответить с цитированием
Старый 01.08.2012, 08:47   #23
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Если пользуетесь шаблоном, тогда вам и typeid не нужно, но вам явно важно залить все в одну функцию...
waleri вне форума Ответить с цитированием
Старый 02.08.2012, 00:11   #24
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Если пользуетесь шаблоном, тогда вам и typeid не нужно
Как это не нужно? А как Вы определите, какую Вам передали структуру?
Насчет RTTI. Структуры не полиморфны, значит использование RTTI невозможно. За этим следует то, что RTTI не имеет к вопросу никакого отношения . Тем более что ТС уже заюзал простой typeid.
rmv240899 вне форума Ответить с цитированием
Старый 02.08.2012, 00:48   #25
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от rmv240899 Посмотреть сообщение
Как это не нужно? А как Вы определите, какую Вам передали структуру?
Вопрос не в том: как?
Вопрос в том: зачем нужно это знание? Как это знание будет использовано?


Код:
class Bla_bla_bla
{
   template <class T>
   void Foo(T data)
   {
       TStrategy<T> bar;
        bar.Work(data);
   }
};
В зависимости от конкретного типа T, будет создан специализированный обработчик данных.

Фактически, сие есть извращенный способ создать искусственную перегрузку функций. Проще использовать простую перегрузку функций языка с++.
_Bers вне форума Ответить с цитированием
Старый 02.08.2012, 10:32   #26
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от rmv240899 Посмотреть сообщение
Как это не нужно? А как Вы определите, какую Вам передали структуру?
Насчет RTTI. Структуры не полиморфны, значит использование RTTI невозможно. За этим следует то, что RTTI не имеет к вопросу никакого отношения . Тем более что ТС уже заюзал простой typeid.
А зачем мне определять тип структуры? Компилятор сам определит и вызовет метод/функцию с нужным аргументом.

typeid это и есть RTTI...
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написание программ (древовидные структуры, структуры неспециального вида и т.д.) Green Gin Фриланс 2 27.04.2012 15:26
Управляющие структуры. Программирование алгоритмов разветвляющейся структуры. Лёнка Компоненты Delphi 1 23.04.2012 15:03
C# определение ф-и Lucky777 Помощь студентам 4 10.06.2011 01:00
Определение по IP ProgDel Работа с сетью в Delphi 3 08.11.2010 22:14
Линейные структуры - что это? (определение) MR_Andrew Помощь студентам 6 07.10.2009 18:38