Допустим, у меня есть на структуруC++ Предоставление произвольного параметра для шаблона с шаблоном для проверки?
struct FStruct
{
FName ObjectName;
};
И у меня есть шаблонный статическую функцию
template <typename T, typename LookType>
static T* GetFromArray(LookType LookFor, TArray<T> InArray)
{
for (T* TIter : InArray)
{
if (LookFor == TIter.LookParameter) // <-- How to provide LookParameter?
{
return TIter;
}
}
return nullptr;
}
Мне нужно предоставить ему переменную из этого ObjClass, чтобы проверить против, как я могу это сделать?
По существу, использование может быть что-то вроде:
MyStaticLib::GetFromArray<FStruct, FName>(FName("Bob"), PeopleArray, FStruct::ObjectName)
Я не вижу, как это может работать. Если 'Titer' является' T * ', то я не вижу, как' Titer.somethingorother' будет действительным C++. –
Предлагаю вам взглянуть на стандартную функцию ['std :: find'] (http://en.cppreference.com/w/cpp/algorithm/find). Прежде всего, не пытайтесь изобретать колесо, но если вы это сделаете, посмотрите, как одна перегрузка обрабатывает все возможные сопоставимые типы сравнения с использованием предиката * * (что-то вызываемое, как указатель на функцию, или объект с функцией 'operator()' member (которая включает [лямбда-выражения] (http://en.cppreference.com/w/cpp/language/lambda))). –
@SamVarshavchik Был обеспокоен тем, что может быть так, есть ли альтернативный способ по существу сделать выше? Предположим, что нет .. Я мог бы перегружать функции в качестве последнего средства для разных типов параметров. – Vii