gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:16:02 24 4
gpt4 key购买 nike

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

所以我做了一个棋子对象,想法是在主要游戏代码中,我有一个棋子数组,我将数组的地址传递给函数“InitilisePieces”和团队(黑色或白色)和它应分配所有的部分。所以我把这个函数作为一个 friend 来访问所有私有(private)成员,它出现了一个错误,说“无法访问”,我不明白我这样做有什么问题。任何帮助将不胜感激!

旁注:诸如 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 数组地址的参数应该是什么?

最佳答案

你的友元函数和你后面定义的函数同名但签名不同。你还没有定义友元函数。

这个

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

和这个不一样

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

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

void InitilisePieces( __Piece** pao_piece, Team_ )

另外:注意 reserved identifiers .

关于C++ Friend 函数不访问私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com