提问者:小点点

如何在类外使用std::sort()对类中的私有数组进行排序


我的代码看起来像这样:

class A
{
//some code here
}

//Class B contains an array of elements of type A

class B
{
//...
private:
    A private_array[1000];
}

//    This function gives a score of A.
//    For reasons I can't explain now, it 
//    can't be a method of class A

int score( A& element)
{
    //....
}

我想使用std::sort通过score()函数对b.private_array进行排序,但我不能,因为它是私有的(我不想将它公开)。这有什么办法解决吗?

编辑:我解决了。这是我的解决方案:我在B中有两个公共方法begin和end

A* begin()
{
    return private_array;
}
A* end()
{
    return private_array + 1000;
}

然后我只是将这些方法传递给std::sort。


共1个答案

匿名用户

我想这会解决你的问题。

我们可以访问类的私有数据成员而不使用成员或朋友函数吗?