Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разные функции у template класса, при разных аргументах темплейта 
V
    Опции темы
korian
Дата 30.3.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



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().

PM   Вверх
Daevaorn
Дата 30.3.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



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

Да. Читайте про специализацию шаблона.
PM MAIL WWW   Вверх
anatox91
Дата 30.3.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



перегрузи, т.е. напиши вариант с нужными тебе функциями


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
korian
Дата 31.3.2008, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



я понимаю, что написать можно так:
Код

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 функций...
хм... появилась идея с наследованием... а по другому никак?

PM   Вверх
vinter
Дата 31.3.2008, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



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

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


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



Это сообщение отредактировал(а) vinter - 31.3.2008, 10:37


--------------------
Мой блог
PM MAIL WWW   Вверх
korian
Дата 31.3.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



vinter, под фразой "появилась идея с наследованием..." я где-то такое и имел ввиду.
значит по другому никак?
PM   Вверх
bsa
Дата 31.3.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



korian, а чем тебе наследование не нравится?
PM   Вверх
korian
Дата 31.3.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



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

та я пока сам не знаю  smile 
вообщем-то нравится...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0905 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.