这个方法的参数码是什么意思?



正如标题所说,TBitArray<>没有确切的类型,所以这是否意味着该方法可以接受TBitArray<int32>,TBitArray<float>,…作为参数?

FORCEINLINE bool HasAll(const TBitArray<>& Other) const
{
FConstWordIterator ThisIterator(*this);
FConstWordIterator OtherIterator(Other);
while (ThisIterator || OtherIterator)
{
const uint32 A = ThisIterator ? ThisIterator.GetWord() : 0;
const uint32 B = OtherIterator ? OtherIterator.GetWord() : 0;
if ((A & B) != B)
{
return false;
}
++ThisIterator;
++OtherIterator;
}
return true;
}

和这个代码有什么区别

template<class T>
FORCEINLINE bool HasAll(const TBitArray<T>& Other) const

TBitArray<>是具有所有默认模板参数的模板类。是TBitArray<int32>还是TBitArray<float>取决于模板定义。

它的定义是:

template<typename Allocator = FDefaultBitArrayAllocator>
class TBitArray;

它既不是int32也不是float,它是默认的数组分配器

这是否意味着这个方法可以接受任何诸如TBitArray<int32>,TBitArray<float>,…作为参数?

TBitArray类的定义:

template<typename Allocator = FDefaultBitArrayAllocator>
class TBitArray;

您可以看到它的模板参数采用Allocator类型,默认为FDefaultBitArrayAllocator。所以,TBitArray<>就是TBitArray<FDefaultBitArrayAllocator>的简写。

相关内容

  • 没有找到相关文章

最新更新