簡體   English   中英

class 訪問函數中的屬性返回錯誤值

[英]Accessing attributes in functions within the class returns wrong values

我有一個構造函數

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);

};

和會員 function

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

調用構造函數后,我在同一個 object 上調用更新 function。

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

但是,如果我在 visual studio 中使用調試模式並在更新方法中使用斷點,我會看到 this->positions 包含所有“-431602080.”。 為什么是這樣?

您在構造函數中聲明了新變量,而不是設置成員。

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};
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM