大家好,我有一个逻辑上的问题...我不得不做一个迷宫迷宫,它可以工作,但后来我试图用类来做...所以就在这里。

我在main之外有一个函数叫做void playeraction();

cout<<"\nAction : ";
cin>>action;

int prevX=posX;
int prevY=posY;
unsigned char space = {32};

switch (action)
{
    case 'a':
        if(grid[posX][posY-1]!='#')
        {
            posY--;
            grid[prevX][prevY]=space;
            system("cls");
            break;
        }

当角色像这样移动时,没有任何问题
现在,当我尝试隐含学习类时,它不会
    case 's':

        if(grid[posX+1][posY]!='#')
        {
            Dragon obj;
            obj.moveSouth(posX);
            grid[prevX][prevY]=space;
            system("cls");
            break;
        }

在龙cpp
int Dragon::moveSouth(int posX)
{
    return posX++;
}

任何想法,为什么它不返回posX++

最佳答案

在您的代码中,有一些错误。

首先,对于“posX ++”,使用其值后增加posX。您应使用++ posX使其增加,然后再使用。

其次,在函数中,其参数的内存在堆栈中。它们是临时的,不是变量的原始存储。

您可以将此代码用作参考。

void Dragon::moveSouth(int & posX){

    posX++;

}

08-28 05:36