这个函数第三个参数什么意思?解决方案
这个函数第三个参数什么意思?
template< unsigned N >
bool RangeName::SearchNameUpper( const String& rUpperName, int& rIndex, const int (&rszScopes)[N] ) const
{
sal_uInt16 i = 0;
while (i < nCount)
{
if ( (((*this)[i])->GetUpperName() == rUpperName)
&& std::find( rszScopes, rszScopes + N, ((*this)[i])->GetRangeScope() ) != rszScopes + N )
{
rIndex = i;
return true;
}
i++;
}
return false;
}
template bool RangeName::SearchName( const String& rName, int& rPos, const int (&rszScopes)[2] ) const;
------解决方案--------------------
int型数组的引用
------解决方案--------------------
这个函数使得我们可以传递任意大小的数组引用作为参数;
如果不使用泛型函数的话,那么你的数组大小必须要写死,譬如100,否则的话,你无法把一个真正的数组传递给函数,你只能传递一个地址,譬如你可以传递一个指针pArray,然后告诉函数你的数组大小nCount,但是此时你传递的本质上是一个指针,你如果用sizeof(pArray)来查看,得到的结果是4,所以需要你的nCount来告诉函数这个指针指向的内存区域有多大,但是这个泛型函数使得数组引用大小为可变的,N变成了泛型的一个参数,泛型除了类型参数T,也可以包含指针或者整型参数,此时如果用sizeof(pArray)得到的大小是N * sizeof(int),而不是4了;
包含非类型参数的泛型类如下:
Template<class T, size_t nStackSize>
class Stack
{
}
template< unsigned N >
bool RangeName::SearchNameUpper( const String& rUpperName, int& rIndex, const int (&rszScopes)[N] ) const
{
sal_uInt16 i = 0;
while (i < nCount)
{
if ( (((*this)[i])->GetUpperName() == rUpperName)
&& std::find( rszScopes, rszScopes + N, ((*this)[i])->GetRangeScope() ) != rszScopes + N )
{
rIndex = i;
return true;
}
i++;
}
return false;
}
template bool RangeName::SearchName( const String& rName, int& rPos, const int (&rszScopes)[2] ) const;
------解决方案--------------------
int型数组的引用
------解决方案--------------------
这个函数使得我们可以传递任意大小的数组引用作为参数;
如果不使用泛型函数的话,那么你的数组大小必须要写死,譬如100,否则的话,你无法把一个真正的数组传递给函数,你只能传递一个地址,譬如你可以传递一个指针pArray,然后告诉函数你的数组大小nCount,但是此时你传递的本质上是一个指针,你如果用sizeof(pArray)来查看,得到的结果是4,所以需要你的nCount来告诉函数这个指针指向的内存区域有多大,但是这个泛型函数使得数组引用大小为可变的,N变成了泛型的一个参数,泛型除了类型参数T,也可以包含指针或者整型参数,此时如果用sizeof(pArray)得到的大小是N * sizeof(int),而不是4了;
包含非类型参数的泛型类如下:
Template<class T, size_t nStackSize>
class Stack
{
}