从类中打印变量

时间:2018-08-28 12:26:00

标签: c++ class oop

我是编程的初学者,我检查了其他问题,例如我的问题,但我什么都不懂。

可悲的是,我有一个代码,并在该代码中创建了一个类。借助类中的方法,我正在更改在类中创建的一些变量。但是当我尝试将它们打印出来时,我不能。也许我做错了什么,但无论如何我都需要帮助,我的代码没有显示任何语法错误,但是当我使用F5运行代码时,控制台会关闭,并且看不到更新的变量。相反,我的调试窗口缺少很多文件内容。

(我尝试返回player.x;也有类似的事情发生)

#include <iostream>

using namespace std;

class Entity  {

public:
    int x, y, speed;

    auto Move(int a, int b , int speed)
    {

        x += a * speed;
        y += b * speed;

    }
}; 

int main() 
{
    Entity player;

    player.Move(1, -1, 4);

    cout << player.x << endl;
    cout << player.y << endl;
}

this is the error window

添加getchar();或Sleep(5000);或system(“ pause”)类型的东西可以使我的控制台保持打开状态,但是现在还有另一个问题,我玩的数字很少,但打印出的数字大约为负80万。感谢您的答复,我没有得到未定义的行为。您是说我无法访问我在“实体”类中创建的main变量吗?

所有问题都归功于大家。 如果您要使用它们,则不应保留任何未定义的变量,我向它们添加了一些值,现在我得到4和-4作为x和y坐标,而不是大约80万或100万的东西。 (x和y 0,如果像我这样的新手感兴趣,则速度为1)。

2 个答案:

答案 0 :(得分:3)

“错误窗口”(实际上是调试输出)中没有重要的错误。有关丢失PDB文件的消息并不重要,可以安全地忽略它们,然后您将看到代码为0的消息,这表明程序运行正常。

您的问题是控制台窗口在您有机会看到输出之前消失了,请参阅this question以获得一些方法,这些方法将允许您在控制台窗口消失之前查看输出。完成此操作后,很可能会看到程序运行正常。

答案 1 :(得分:1)

第二部分的问题是您没有初始化xy变量。 使用x +=y +=,您正在向未初始化的变量中添加一些内容。

尝试将您的Entity修改为此:

class Entity  
{

public:
   Entity():x(0),y(0){}; //this line is the costructor and initializes the x e y variables.
   int x, y;

   auto Move(int a, int b , int speed)
   {
     x += a * speed;
     y += b * speed;
   }
};