Re[8]: template static methods
От: Vain Россия google.ru
Дата: 16.10.09 13:24
Оценка: 1 (1) +2
Здравствуйте, anagaf, Вы писали:

H>>Код который я привел раньше
Автор: hramovnik
Дата: 16.10.09
не использует костыли и прекрасно работает.

H>>Может я чего то не понял?
A>Просто не хочется делать класс Tester шаблонным. Очень сложный шаблон может получиться, функций типа test несколько и у каждой по несколько параметров
Так и перегрузи их, а не объявляй шаблонными. А имплементацию сделай шаблоном:
//Tester.h
class A;
void foo(int);
void foo(long);
void foo(A);

//Tester.cpp
#include "Tester.h"

template<int N,class T>
void foo_impl(T);

template<class T>
void foo_impl<1>(T)
{
  //Общая имплементация #1
}

template<class T>
void foo_impl<2>(T)
{
  //Общая имплементация #2
}

void foo(int a)
{
  return foo_impl<1,int>(a); //Имплементация #1
}

void foo(long a)
{
  return foo_impl<1,long>(a); //Имплементация #1
}

void foo(A a)
{
  return foo_impl<2,A>(a); //Имплементация #2
}
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[13]: template static methods
От: denisko http://sdeniskos.blogspot.com/
Дата: 16.10.09 14:01
Оценка:
Здравствуйте, hramovnik, Вы писали:

H>Здравствуйте, denisko, Вы писали:


D>>Здравствуйте, hramovnik, Вы писали:


H>>>Код из рабочего проекта, так что куски повырезал. Если сильно захочется скомпилить, ты уж, если чего не хватает, добавь

D>>Какое отношение этот код имеет к проблеме? Предлагаешь автору для любого чиха шаблон специализировать? Генитальное решение.

H>Я же написал, что просто он попался под руку.

А давай тебе под руку попадется cpp с неспециализированным шаблоном, причем так чтобы минимальный проект компилировался. Уж очень хочется на эту мифическую тварь посмотреть
<Подпись удалена модератором>
Re[9]: template static methods
От: alexandrivanovdev  
Дата: 16.10.09 15:23
Оценка:
Все это конечно хорошо, но практического смысла мало..., что если потребуется добавить новый тип?
Нельзя сделать инстанциацию темплейта для заранее неизвестного типа. Выход один добавлять все в хедер-файл.
Об инкапсуляции надо думать в другом месте (кода)
Re[10]: template static methods
От: Vain Россия google.ru
Дата: 16.10.09 19:26
Оценка:
Здравствуйте, alexandrivanovdev, Вы писали:

A>Все это конечно хорошо, но практического смысла мало..., что если потребуется добавить новый тип?

A>Нельзя сделать инстанциацию темплейта для заранее неизвестного типа. Выход один добавлять все в хедер-файл.
A>Об инкапсуляции надо думать в другом месте (кода)
Есть алгоритмы, которые накладно копи-пастить, проще сделать шаблон для имплементации.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: template static methods
От: wander  
Дата: 16.10.09 19:50
Оценка:
Оффтоп, но мне дико интересно за что человеку минусов понаставили?
Re[11]: template static methods
От: alexandrivanovdev  
Дата: 17.10.09 07:07
Оценка:
V>Есть алгоритмы, которые накладно копи-пастить, проще сделать шаблон для имплементации.

Ну так это понятно, просто надо этот шаблон добавить в хедер файл и пусть там лежит например — базовая имплементация для неизвестного типа, несколько имплементаций для различных типов (для которых необходима кастомная имплементация алгоритма). А вот клиентский код будет уже решать какую использовать, может быть даже для какого-то типа придется использовать свою — в клиетском коде.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.