【问题标题】:Printing variables from classes [duplicate]从类中打印变量[重复]
【发布时间】:2019-02-03 02:06:41
【问题描述】:

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

遗憾的是,我有一个代码,并且在该代码中我创建了一个类。在类中的方法的帮助下,我正在更改我在类中创建的一些变量。但是当我尝试将它们打印出来时,我不能。也许我做错了什么,但无论如何我需要帮助,我的代码没有显示任何语法错误,但是当我用 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();或睡眠(5000);或系统(“暂停”)类型的东西可以让我的控制台保持打开状态,但现在还有另一个问题,我玩的数字很低,但它打印出大约负 80 万的东西。感谢您的回复,我没有得到未定义的行为。你是说我无法访问我在“实体”类中创建的 main 变量吗?

感谢大家,问题都解决了。 如果你要玩它们,你不应该留下任何未定义的变量,我给它们添加了一些值,现在我得到 4 和 -4 作为 x 和 y 坐标,而不是大约 80 万或百万的东西。 (x 和 y 0,如果像我这样的新手有兴趣,速度 1)。

【问题讨论】:

  • 尝试 Ctrl+F5(假设为 Visual Studio),否则使用 F5 运行,但在 main 末尾添加 return 0; 并在其上放置断点。
  • Entityxyspeed 成员永远不会初始化为任何值,因此对它们的任何访问都是未定义行为
  • @Borgleader Ctrl+F5 选项似乎在 VS 2017 中被删除了。
  • 请以文本的形式直接在您的问题中发布错误消息,而不是屏幕截图
  • @Ron 注意,根据您的配置设置,实际的快捷方式可能不是Ctrl+F5

标签: c++ class oop


【解决方案1】:

“错误窗口”(实际上是调试输出)中没有重要错误。有关丢失 PDB 文件的消息并不重要,可以安全地忽略,然后您会收到一条带有代码 0 的退出消息,告诉您程序运行正常。

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

【讨论】:

    【解决方案2】:

    第二部分的问题是您没有初始化 xy 变量。 使用 x += e 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;
       }
    }; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 2023-01-22
      • 2015-04-08
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多