[英]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.