【问题标题】:Accessing attributes in functions within the class returns wrong values访问类内函数中的属性会返回错误值
【发布时间】:2020-10-08 22:48:38
【问题描述】:

我有一个构造函数

GameObject::GameObject(Node body){
    _body = body; 

    glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f);
    glm::vec3 velocity = glm::vec3(0.0f, 1.0f, 0.0f);

};

还有一个成员函数

void GameObject::update(float dt) {
    this->position = this->position + this->velocity * dt;
}

调用构造函数后,我在同一个对象上调用更新函数。

GameObject* go_water = new GameObject(water);
go_water.update(dt);

但是,如果我在 Visual Studio 中使用调试模式并在更新方法中使用断点,我会看到 this->positions 包含所有“-431602080.”。这是为什么呢?

【问题讨论】:

    标签: c++ class object attributes glm-math


    【解决方案1】:

    您在构造函数中声明了新变量,而不是设置成员。

    GameObject::GameObject(Node body){
        _body = body; 
    
        position = glm::vec3(0.0f, 0.0f, 0.0f);
        velocity = glm::vec3(0.0f, 1.0f, 0.0f);
    };
    

    甚至更好:

    class GameObject {
      public:
        GameObject(Node body) : body{std::move(body)} {}
    
      private:
        Node body;
        glm::vec3 position{0.0f, 0.0f, 0.0f};
        glm::vec3 velocity{0.0f, 1.0f, 0.0f};
    };
    

    【讨论】:

      猜你喜欢
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多