Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
sergio1
12 / 1 / 1
Регистрация: 08.11.2008
Сообщений: 41
#1

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

05.09.2010, 13:04. Просмотров 552. Ответов 2
Метки нет (Все метки)

Всем привет. Допустим имеется шаблонный класс
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() была недоступна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2010, 13:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функции, зависимые от параметра шаблона (C++):

Создание шаблона bool-функции, принимающей в качестве параметра экземпляр класса
Добрый день. Никак не получается осилить) Суть: есть классы, у которых есть...

Извлечение значения параметра шаблона
Добрый день! Имеется следующий шаблонный тип: using BoardSize =...

Структура в качестве параметра шаблона
Добрый день, возник вопрос при выполнении КР по программированию: Можно ли...

Объявление параметра типа шаблона дружественным
Объясните, что значит friend Type?

Передача класса в качестве параметра шаблона
Имеется два класса, один это однонаправленный итератор, другой это...

Передача параметра шаблона другому шаблону при использовании
Вопрос довольно сложно поставил, поэтому лучше объясню кодом, возможно ли это...

2
Manjak
269 / 175 / 46
Регистрация: 12.03.2010
Сообщений: 494
05.09.2010, 17:32 #2
Шаблоны компилируются отдельно для каждого типа, т.е. если в переданом Т не будет определена функция foo(), то компилятор попросту выдаст ошибку при попытке вызова.
0
Nick Alte
Эксперт С++
1646 / 1018 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
05.09.2010, 18:52 #3
А ещё точнее, компилятор выдаст ошибку в том случае, если в переданном классе (назовём его Т0) не определена функция foo() и при этом хоть где-нибудь вызывается функция Test<T0>::SomeFunction2(). Если её вызова нет, то всё проканает даже при отсутствии foo(), ибо невызываемые функции в шаблонах не создаются.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2010, 18:52
Привет! Вот еще темы с решениями:

Функции, зависимые от реализации компилятора
какой вызов является зависимым от реализации компилятора? realloc(..., 0)...

Как вы шаблонном классе определить контейнер, тип которого совпадает с именем параметра шаблона?
собсно template &lt;class T&gt; class perestanovki { public: T&lt;int&gt; v; ...

Разработайте перегружены функции, в которые передаются два параметра типов int или float и три параметра типов
Разработайте перегружены функции, в которые передаются два параметра типов int...

Использование функции как параметра другой функции
В задании указано, что функция P прибавляет значение функции ff к элементу...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru