use*_*489 0 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 ();
};
Run Code Online (Sandbox Code Playgroud)
.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;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
谢谢你的解释,我得到了我现在出错的地方......那么传递__Piece数组地址的参数是什么?
您的朋友功能和您稍后定义的功能具有相同的名称但签名不同.您尚未定义好友功能.
这个
void InitilisePieces( __Piece(*)[16], Team_);
Run Code Online (Sandbox Code Playgroud)
与此不一样
void InitilisePieces( __Piece * pao_piece[16], Team_ )
Run Code Online (Sandbox Code Playgroud)
前者的第一个参数是指向16 __Pieces 数组的指针.后者的第一个参数被调整为__Piece** pao_piece,即指向a的指针__Piece.换句话说,就是这样:
void InitilisePieces( __Piece** pao_piece, Team_ )
Run Code Online (Sandbox Code Playgroud)
另外:注意保留的标识符.