编译器优化了我需要的变量

时间:2014-10-31 16:32:56

标签: c++ optimization

我有一个类AssetInstance:

#pragma once

#include "Asset.h"

#define GRAVITATIONAL_CONSTANT -2.45f

class AssetInstance
{
private:
    GLfloat maxX();
    GLfloat maxY();
    GLfloat maxZ();

    GLfloat minX();
    GLfloat minY();
    GLfloat minZ();

public:
    AssetInstance();
    ~AssetInstance();
    void updateBoundaries();
    void calculateMinAndMaxXYZ();
    glm::mat4 translate();
    glm::mat4 scale();
    void updatePosition();
    GLfloat timeInSeconds(long int time);
    GLfloat randomFloat();

    Asset* asset;
    glm::vec3 position;
    glm::vec3 size;
    glm::vec3 materialColor;
    glm::vec3 materialSpecularColor;
    GLfloat materialShininess;
    long int lastTime;
    glm::vec3 velocity;
    glm::vec3 acceleration;
    std::vector<glm::vec3> vertices;
    glm::vec3 max;
    glm::vec3 min;
};

并且函数calculateMinAndMaxXYZZ()将max.x,max.y,max.z设置为它们的最大值,并使用min和最小值执行相同的操作。

然而,当我运行我的calculateMinxAndMaxXYZ()函数时,我收到一条消息,说我的变量已被优化掉并且不可用...我该如何阻止它?

如果我在抛出错误时进入类,这就是它的样子

enter image description here

1 个答案:

答案 0 :(得分:2)

事实证明,我从未在vertices中初始化AssetInstance向量,因此我尝试访问不存在的vertices.at(0)