Скачать MetaTrader 5

Попытка реализации функции IsPointer - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ilya Prozumentov
288
Ilya Prozumentov  
LRA:

Вот Ваш класс прекрасно перегрузился

 Тут явно указан тип указателя класса
bool Тип(Color* Параметр)
Представьте, что классом ArrayList буду пользоваться не только я. Тогда никто заранее не знает, указатель на какой класс будет передан. Писать на каждый новый класс ещё одну версию перегрузки - выход совсем не изящный.
Алексей Тарабанов
7328
Алексей Тарабанов  
SunnYtheDreamer:
 Тут явно указан тип указателя класса
Представьте, что этим классом буду пользоваться не только я. Тогда никто заранее не знает, указатель какого класса будет передан. Писать на каждый новый класс ещё одну версию перегрузки - выход совсем не изящный.
У Вас нелады с основами, если хотите - можете обидеться. 
Ilya Prozumentov
288
Ilya Prozumentov  
tara:
У Вас нелады с основами, если хотите - можете обидеться. 
Нет, не на что. Я неявно забыл упомянуть контекст. Исправил. Хотя можно и догадаться, поскольку слишком сильная смысловая не стыковка для тем с классами, указателями, перегрузками. Как бы ошибка другого уровня.
Комбинатор
16172
Комбинатор  

Шаблоны то что ищете вы

#property strict

template <typename T>
bool IsPointer(T)
{
   return false;
}

template <typename T>
bool IsPointer(const T&)
{
   return false;
}

template <typename T>
bool IsPointer(T* ptr)
{
   return true;
}

class T
{};

void OnStart()
{
   int x = 1;
   T t;
   T* pt = GetPointer(t);
   
   Print(IsPointer(x));
   Print(IsPointer(t));
   Print(IsPointer(pt));
}
Ilya Prozumentov
288
Ilya Prozumentov  
TheXpert:

Шаблоны то что ищете вы

 

Отлично! Спасибо, работает. Про существование шаблонов мне известно и местами я их уже применял, но то, что можно сделать перегрузку самих шаблонов - я совсем не подозревал. Как это возможно? Особенно тот момент где с виду не полностью описываются входные параметры. Где об этом можно узнать поподробней?
Комбинатор
16172
Комбинатор  
SunnYtheDreamer:
Где об этом можно узнать поподробней?
Поищите по теме перегрузка и специализация шаблонных функций в С++
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий