Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.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++_Function_Class_Object_Variables - Fatal编程技术网

C++ 将变量从多个类传递给函数

C++ 将变量从多个类传递给函数,c++,function,class,object,variables,C++,Function,Class,Object,Variables,我正在做一个简单的游戏来捕捉果实,但是我在冲突逻辑和/或使用类中的变量方面遇到了麻烦 class row { public: int x,y; void setpoint (int xi, int yi) { x=xi; y=yi; } float DownSpeed = 5; void down () { y = y+DownSpeed; if (y==1000) { y=0;

我正在做一个简单的游戏来捕捉果实,但是我在冲突逻辑和/或使用类中的变量方面遇到了麻烦

class row
{
public:
int x,y;
    void setpoint (int xi, int yi)
    {
        x=xi;
        y=yi;
    }

float DownSpeed = 5;
void down () {

    y = y+DownSpeed;

    if (y==1000) {
            y=0;
        }
    }
};


class fruit:public row
{
public:
void draw()
{
    setcolor(11);
    circle(x,y,20);
}
};
然后我有其他类来创建catcher,如下所示:

class catcher
{
protected:

float moveSpeed = 5;

public:

float catchX, catchY;
void setpoint (int xi, int yi)
    {
        catchX=xi;
        catchY=yi;
    }
void MoveLeft () {
    catchX = catchX - moveSpeed;}

void MoveRight () {
    catchX = catchX + moveSpeed;}

};

class character:public catcher
{
public:
void draw()
{
    setcolor(15);
    circle(catchX,catchY,50);
}
};

如何调用两个圆的变量来创建碰撞函数?很抱歉,如果代码混乱且无效,我只是刚开始,我被卡住了。谢谢

由于这两组变量都位于类的公共部分,因此您应该能够创建独立于任何一个类的函数,并且只要声明了变量,就应该能够访问它们

void CheckCollision(float x, float y, float catchX, float catchY)
{
    If(y =< catchY + 5)
    {
        //y resets
    }
}
void CheckCollision(float x,float y,float catchX,float catchY)
{
如果(y=<朗朗上口+5)
{
//y重置
}
}

不过,你应该检查它是否也在某个x范围内。我希望这能解决您的问题。

因为所有函数和变量都是公共的。从修改x、catchX的函数返回x、catchX的值。修改值后使用绘图函数

例如,像这样修改down函数

int down()
{
    y = y+DownSpeed;

    if (y==1000) 
    {
        y=0;
    }
    return y;
} 

像wise那样修改另一个函数,最终将得到x,y和catchX,catchY值。使用这些值创建collison函数。

谢谢您的回答!不幸的是,我仍然无法让它工作。我将x、y、catchX和catchY分别声明为a、b、c、d,在新变量中插入一些数字,并将其用于a.setpoint(水果)和CH.setpoint(捕捉器),如下所示:a.setpoint(a,b)。然后我对碰撞函数使用了一个bcd,但它仍然不起作用。出了什么问题?你是如何使用这些课程的?您当前没有对象,只有定义