我正在制作纸牌游戏,我有一些课程。 我有一个Hand类,一个Player类,一个“Column”类(手牌后将卡放在屏幕上),我需要每个类都可以访问其他类的变量。
class Hand
{
private:
int **Hx,Hy;** //Hand X, Hand Y
int HAmount;//Amount of cards in Hand
int HOwner; //Player 1/2
int Limit; //Limit of cards in Hand
int HContents[8]; //Card Position in 54 card deck NOT card value.
bool Removed;
public:
Hand();
void Lim();
void Get_Card();
void Show();
void Set_Values(int y, int Own);
};
然后在另一个类中,我需要访问上面的一些变量。
void Card::show()
{
if((apply == true)
{
if((Track == true)&&(SelNum == TNum)&&(TOwner == COwner))
{
ScnPos = TAmount;
x = Tx;
y = Ty + ScnPos*10;
}
if((Hand == true)&&(**HOwner** == COwner))
{
x = **Hx** + ScnPos*45;
y = **Hy;**
}
apply_surface(x,y,Cards,Screen,&Clip[Pos]);
}
}
我尝试过使用阶级友谊和其他方法,但我无法使其发挥作用。 (显然我有更多需要同样治疗的变量) (忽略我代码中的任何错误)
答案 0 :(得分:2)
代码中的错误是真正的问题。 Card
没有理由访问Hand
的私人会员。这是设计错误,而您的其他问题只是试图告诉您。
答案 1 :(得分:0)
好吧,您应该为变量设置getters
和setters
。 E.g:
class Test {
private: int a;
public: int GetA() {
return this->a;
}
void SetA(int a) {
this->a = a;
}
}