C ++ Friend函数不访问私有成员

时间:2015-10-14 11:28:28

标签: c++ arrays object friend

所以我正在尝试制作国际象棋游戏(对我来说是一个终极挑战),而且我是这个部分的残障......

所以我制作了一个片段对象,我的想法是在主游戏代码中,我有一系列片段,我将数组的地址传递给函数“InitilisePieces”和团队(黑色或白色)和它应分配所有部分。所以我让这个函数成为了访问所有私有成员的朋友,并且它出现了一个错误,说“无法访问”,我不明白我做的事情有什么问题。任何帮助都会受到赞赏!

旁注:像State_和_Location这样的东西,以及正确定义的结构和枚举等,不是问题...(我不认为)

头文件包含:

class   __Piece
{
private:

    State_              e_state;
    Piece_Type_         e_type;
    Team_               e_team;
    _Location           st_location;

    friend void         InitilisePieces     ( __Piece(*)[16], Team_);

public:
    __Piece             ();

};

.cpp文件包含:

void                    InitilisePieces     ( __Piece * pao_piece[16], Team_ )
{
    int         n_count;

    for ( n_count = 0; n_count < 16; n_count++ )
    {
        pao_piece[ n_count ]->e_state;
    }
}

更新:

谢谢你的解释,我现在遇到了错误的地方......那么传递__Piece数组地址的参数应该是什么?

1 个答案:

答案 0 :(得分:7)

您的朋友功能和您稍后定义的功能具有相同的名称但签名不同。您尚未定义好友功能。

void InitilisePieces( __Piece(*)[16], Team_);

与此

不同
void InitilisePieces( __Piece * pao_piece[16], Team_ )

前者的第一个参数是指向16 __Piece s数组的指针。后者的第一个参数调整为__Piece** pao_piece,即指向__Piece指针的指针。换句话说,就是这样:

void InitilisePieces( __Piece** pao_piece, Team_ )

另外:提防reserved identifiers

相关问题