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

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

05.09.2010, 13:04. Просмотров 561. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

2
Manjak
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
05.09.2010, 17:32 2
Шаблоны компилируются отдельно для каждого типа, т.е. если в переданом Т не будет определена функция foo(), то компилятор попросту выдаст ошибку при попытке вызова.
0
Nick Alte
Эксперт С++
1647 / 1019 / 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) memcpy() между...

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


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

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

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