gpt4 book ai didi

c++ - 具有 boolean 值的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 04:09:41 24 4
gpt4 key购买 nike

我正在为一个大学项目设计一个机器人模拟器,我遇到了一些碰撞检测的大问题。这是我的 robot.h 头文件:

#ifndef robot_h
#define robot_h

#include <vector>

enum direction
{
UP,DOWN,LEFT,RIGHT
};

enum motor
{
STOP,SLOW,FAST
};

class robot
{
public:
robot();

char bot; // The bot onscreen
int getX(); // The X position of robot
int getY(); // The Y position of robot

int dir; // The direction the robot is going

bool touchSensor; // Boolean value if collision
int lightSensor; // light sensor between 10-100
int motorA; // Motor A between 0, 1 and 2
int motorB; // Motor A between 0, 1 and 2
void detection(int x, int y);

void getReturnObject();
bool returnObjectDash;
bool returnObjectLine;

void move(); // Moving the robot
void draw(); // Drawing the robot on screen
void update(); // Updating the robot position

private:
int positionX; // Starting X value
int positionY; // Starting Y value
};

#endif

基本上,我使用了两个 boolean 值:returnObjectDash;returnObjectLine。我的 matrix.cpp 文件中有这段代码:

void matrix::detection(int x, int y)
{
if(vector2D[x][y]=='-')
{
returnObjectDash=true;
system("pause");
}
else
{
returnObjectDash=false;
}
if(vector2D[x][y]=='|')
{
returnObjectLine=true;
}
else
{
returnObjectLine=false;
}
}

在我的 robot.cpp 中,我有这段代码获取两个 boolean 值,然后输出到控制台:

void robot::getReturnObject()
{
if(returnObjectDash==true)
{
std::cout<<"Dash\n";
//dir=DOWN;
}
if(returnObjectLine==true)
{
std::cout<<"Line\n";
//dir=DOWN;
}
}

这是我的main.cpp

int main()
{
robot r;

while(true)
{
matrix m;
m.robotPosition(r.getX(), r.getY());
m.update(); // vector2D init and draw
m.detection(m.getX(), m.getY());
r.update();
Sleep(250);
}
}

我将 matrix.cpp 默认构造函数中的两个 boolean 变量的默认值设置为 false。当我按下暂停按钮并进行调试时,我似乎得到了两种不同的返回。对于我的矩阵,它返回 false,但对于我的机器人,它返回 true,这就像我的程序正在生成两个不同的变量。如果有人可以阐明这种奇怪的行为,请告诉我!谢谢

最佳答案

您的程序生成两个不同的值,因为它两个不同的值。 matrix 类显然有自己的 boolean 变量 matrix::returnObjectDash,而机器人类有自己的变量 robot::returnObjectDash。在一个类的一个实例中设置变量不会影响任何其他类(或任何其他实例)中的变量。

关于c++ - 具有 boolean 值的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com