Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > разные функции у template класса


Автор: korian 30.3.2008, 16:54
template
class A
{
public:
    void func();
    void func1();
    void func2();
};

A<int> i;
A<double> d;

можно ли переобпределить класс A так, чтобы у объекта i были только функции func() и func1(), и не было функции func2, 
и соответственно у объекта d были только функции func() и func2() и не было функции func1().

Автор: Daevaorn 30.3.2008, 19:42
Цитата(korian @  30.3.2008,  17:54 Найти цитируемый пост)
можно ли переобпределить

Да. Читайте про специализацию шаблона.

Автор: anatox91 30.3.2008, 20:45
перегрузи, т.е. напиши вариант с нужными тебе функциями

Автор: korian 31.3.2008, 10:16
я понимаю, что написать можно так:
Код

template <class T>
class A
{
public:
int func() {return 0;}
};

template <>
class A<int>
{
public:
int func() {return 0;}
int func1() {return 1;}
};

template <>
class A<double>
{
public:
int func() {return 0;}
int func2() {return 2;}
};


но можно ли написать так, чтобы 3 раза не объявлять/определять функцию func()?
у меня таких функций будет куча, а дополнительных для конкретного типа всего одна.
получается, если у меня в классе A должно быть 20 функций, то мне придется объявлять/определять еще 40 функций...
хм... появилась идея с наследованием... а по другому никак?

Автор: vinter 31.3.2008, 10:36
Цитата(korian @  31.3.2008,  11:16 Найти цитируемый пост)
получается, если у меня в классе A должно быть 20 функций, то мне придется объявлять/определять еще 40 функций...

да
можно сделатьединый базовый класс в котором определить все ф-ии потом наследовать этому классу разными специализациями, затем обьявлять нужные ф-ии в потомке, а определять их как 
Код


int func()
{
    return this->func();//вызов метода базового класса
}


Автор: korian 31.3.2008, 11:22
vinter, под фразой "появилась идея с наследованием..." я где-то такое и имел ввиду.
значит по другому никак?

Автор: bsa 31.3.2008, 11:42
korian, а чем тебе наследование не нравится?

Автор: korian 31.3.2008, 12:53
Цитата(bsa @  31.3.2008,  10:42 Найти цитируемый пост)
korian, а чем тебе наследование не нравится?

та я пока сам не знаю  smile 
вообщем-то нравится...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)