Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从另一个类访问变量/函数_C++_Class - Fatal编程技术网

C++ 从另一个类访问变量/函数

C++ 从另一个类访问变量/函数,c++,class,C++,Class,我正在做纸牌游戏,我有几节课。 我有一个手牌类,一个玩家类,一个“列”类(牌放在手牌后面的屏幕上),我需要每个类都能访问其他类的变量 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 HConte

我正在做纸牌游戏,我有几节课。 我有一个手牌类,一个玩家类,一个“列”类(牌放在手牌后面的屏幕上),我需要每个类都能访问其他类的变量

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]);
    }
}
我尝试过使用班级友谊和其他方法,但我不能让它起作用。 (显然,我有更多的变量需要同样的处理)
(忽略我代码中的任何错误)

好吧,你应该为你的变量设置
getter
setter
。例如:

class Test {
    private: int a;
    public: int GetA() {
       return this->a;
    }
    void SetA(int a) {
       this->a = a;
    }
}

代码中的错误才是真正的问题。
没有理由访问
手牌
的私人会员。这是设计错误,您的其他问题正试图告诉您这一点。

我同意。没有理由一张卡片需要知道任何关于手牌的信息。使一手牌中的所有牌相互作用所涉及的任何逻辑都应该在手牌类中,这应该调用该牌类上与其他牌相互作用的方法。班级友谊在这里是不必要的,在任何精心设计的课程中通常都是不必要的。@Elazar谢谢,我认为班级友谊有点不正确。。显然,我的程序在这一点上远远不是“精心设计的”。不需要参考这个。这是暗示。仅当需要引用调用对象本身而不是其成员之一时,才需要此选项。与return*类似,在您引用的示例中,传入的a不应称为a。@bdwain-在这种情况下,他需要
this->a
是针对其执行函数的实例的
a
,而
a
是传入的参数。“这,@Ivan,应该告诉你我为什么会这样想:因为这是令人困惑的代码。想象一下,只要搜索
“this->”
的实例并将其替换为
”,就可以很容易地巧妙地破解此代码。是的,我读过这篇文章后马上意识到命名是错误的。