Мне нужно создать шаблонную функцию, чье значение T является дочерним для базового класса (Actor). В C# это делается так:
//C#
public T Create<T>() where T : Actor
{
}
Если вы посмотрите на C# MSD ( здесь ):
где в определении обобщенного c указывает ограничения на типы, которые используются в качестве аргументов для параметров типа в обобщенном типе, методе, делегате или локальной функции. [ ... ]
Итак, я попробовал это в своем коде C ++, но мне было интересно найти другие способы сделать это. Что-то более заметное, что не позволяет вам присвоить этой функции неподдерживаемое значение и / или, если вы это сделаете, вы легко обнаружите ошибку. Этот способ не подходит для меня.
//C++
template<typename T>
T* Create()
{
static_assert(std::is_base_of<Actor, T>::value, L"T must inherit from Actor");
//Some code
return actor;
}
Заранее спасибо и приветствую!