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

问题描述 投票:0回答:2

正如标题所说,

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
c++ templates unreal-engine4 unreal-engine5
2个回答
0
投票

那么这是否意味着该方法可以接受任何诸如

TBitArray<int32>
TBitArray<float>
,...作为参数?

TBitArray
类的定义:

template<typename Allocator = FDefaultBitArrayAllocator>
class TBitArray;

你可以看到它的模板参数采用

Allocator
类型,并且默认为
FDefaultBitArrayAllocator
。所以,
TBitArray<>
只是
TBitArray<FDefaultBitArrayAllocator>
的简写。


0
投票

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

这里是它的定义:

template<typename Allocator = FDefaultBitArrayAllocator>
class TBitArray;

所以,它既不是

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

© www.soinside.com 2019 - 2024. All rights reserved.