C++ 无法在两个函数之间复制值

C++ 无法在两个函数之间复制值,c++,syntax,C++,Syntax,这是我的代码: void Draw() { int x = 57; int y = 500; int temp = x; int colour; for (int i = 0; i <= 13; ++i){ for (int j = 0; j <= 9; ++j){ if (i % 2 == 0){ colou

这是我的代码:

void Draw() {
        int x = 57;
        int y = 500;
        int temp = x;
        int colour;
        for (int i = 0; i <= 13; ++i){
            for (int j = 0; j <= 9; ++j){
                if (i % 2 == 0){
                    colour = 3;
                    }
                else colour = 4;
                DrawRectangle(x, y, 67, 30, colors[colour]);
                x = x + 67;
            }
            y = y - 30;
            x = temp;
        }


        DrawCircle(100, 100, 10, colors[2]);
        DrawRectangle(20, 0, 95, 12, colors[1]);


    }

    void Move(int key, int x, int y) {
        if (key == GLUT_KEY_LEFT) { // left arrow key is pressed

        }
        else if (key == GLUT_KEY_RIGHT) { // right arrow key is pressed


        }
        glutPostRedisplay(); // Redo- the drawing by calling
    }
void Draw(){
int x=57;
int y=500;
int-temp=x;
内部色彩;

对于(int i=0;i可以使用全局变量,也可以将值作为参数发送。全局变量在任何函数体之外声明。

我不太明白为什么不将参数传递给
Draw()
函数,因为您需要将变量传递给它。但这里有另一种方法,而不是使用全局变量

您可以创建一个具有这两种方法的新类,可以将其命名为
Pen
?然后向
Pen
类添加两个属性,更改函数
Move()
中的值,然后
Draw()
可以使用这些变量

这比使用全局变量要好,因为您只想在这两个函数中使用它们,对吗?最好将每个变量保持在它们应该的范围内

希望这会有所帮助。

选项1 您可以将函数签名更改为
Draw(intx,inty)
。虽然您没有声明您不能更改函数签名,但我猜此选项是不可能的

选择2 您声明这些是类的成员函数。因此,您需要将变量的范围扩大到
Move
函数之外。您可以通过将它们设置为成员变量来实现这一点。例如:

class Foo
{
public:
    Foo() :
        mX(0),
        mY(0)
    {
        // Do nothing
    }

    void Draw()
    {
        ... code in here that uses mX and mY ...
    }

    void Move(int key, int x, int y)
    {
        mX = x;
        mY = y;

        ... other code ...
    }

private:
    // Class member variables accessible by all functions in the class
    int mX;
    int mY;
};

x
y
可能应该是实例变量?是的,它适用于全局变量。但是我们的讲师严格限制了使用它们。我也尝试将它们作为参数传递,但值总是被覆盖为Draw()函数是从不同的位置调用的。是的,每次作为参数传递的值都是过多的。请考虑每次调用函数时保存绘图函数的值。如果可能的话,你能详细说明你要做什么吗?我怎样才能访问函数MOVER()的成员?从我的新钢笔班?你可以把他们转到钢笔班。这很有效!你不知道我对你有多感激。我在这方面工作了很长时间,想不起来。谢谢你+代表