Форум программистов, компьютерный форум CyberForum.ru

Функции, зависимые от параметра шаблона - C++

Восстановить пароль Регистрация
 
sergio1
 Аватар для sergio1
12 / 1 / 1
Регистрация: 08.11.2008
Сообщений: 41
05.09.2010, 13:04     Функции, зависимые от параметра шаблона #1
Всем привет. Допустим имеется шаблонный класс
C++
1
2
3
4
5
6
7
8
9
template<class T>
class Test
{
  T _t;
public:
  Test(T& t) : _t(t) { } 
  int SomeFunction1() { return 0; }
  int SomeFunction2() { return _t.foo(); }
};
Как сделать так чтобы SomeFunction2() была доступна только когда Т имеет функцию int foo()? А в случае если класс не имеет такую функцию то чтобы функция SomeFunction2() была недоступна.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2010, 13:04     Функции, зависимые от параметра шаблона
Посмотрите здесь:

C++ Создание шаблона функции
C++ Как вы шаблонном классе определить контейнер, тип которого совпадает с именем параметра шаблона?
C++ специализация шаблона функции
C++ 2 параметра в 1 функции
Создание шаблона bool-функции, принимающей в качестве параметра экземпляр класса C++
Структура в качестве параметра шаблона C++
Создание шаблона функции C++
Передача класса в качестве параметра шаблона C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
05.09.2010, 17:32     Функции, зависимые от параметра шаблона #2
Шаблоны компилируются отдельно для каждого типа, т.е. если в переданом Т не будет определена функция foo(), то компилятор попросту выдаст ошибку при попытке вызова.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
05.09.2010, 18:52     Функции, зависимые от параметра шаблона #3
А ещё точнее, компилятор выдаст ошибку в том случае, если в переданном классе (назовём его Т0) не определена функция foo() и при этом хоть где-нибудь вызывается функция Test<T0>::SomeFunction2(). Если её вызова нет, то всё проканает даже при отсутствии foo(), ибо невызываемые функции в шаблонах не создаются.
Yandex
Объявления
05.09.2010, 18:52     Функции, зависимые от параметра шаблона
Ответ Создать тему
Опции темы

Текущее время: 20:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru