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

 
LRA:

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

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

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

#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));
}
 
TheXpert:

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

 

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