Russian Qt Forum
Ноябрь 22, 2024, 12:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не ложится template  (Прочитано 2503 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Февраль 02, 2017, 16:59 »

Добрый день

Псевдокод
Код
C++ (Qt)
// импорт данных из одного формата в другой
void ReadFrame( SrcNode * src, DstNode * dst, int frame )
{
// читаем входное значение параметра Intensity если оно анимировано
SrcProperty<srcDouble> & srcIntensity = src->Intensity();  
if (srcIntensity .IsAnimated()) {
   srcDouble srcValue = srcIntensity.EvaluateValue(frame);
   double currentValue = MaybeConvertValue(srcValue);
 
// если входное != имеющемуся дефаулту
// то устанавливаем выходное для данного фрейма
  DstChannel & dstChannel = dst->GetChannel(ID_INTENSITY);
  double defaultValue = dstChannel.GetDefault();
  if (fabs(currentValue - defaultValue) > epsilon)
    dstChannel.SetFrameValue(value, frame);
}
 
// все по новой для след параметра
SrcProperty<srcRGB> & srcColor = srcNode->Color();
...  
}
 
Ну и так неск десятков раз, повторы/дубляж очевидны. По поводу MaybeConvertValue - там вариантов немного. 4-5. Для примера выше srcDouble это просто double (typedef). Для векторов double[3] <-> QVector3D, ну и в одном случае надо домножить на константу

Пытался с template, но как-то монструозно выходит. Что посоветуете?

Спасибо
« Последнее редактирование: Февраль 03, 2017, 15:33 от Igors » Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Февраль 02, 2017, 21:51 »

Сделать по функции на каждый тип srcDouble, зачем тут темплейты..
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.071 секунд. Запросов: 22.