2014-10-31 54 views
-2

我有一个类,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

+7

显示的地址是0x00000003,这更可能表明您调用了“AssetInstance *”方法,该方法不指向此对象的实例。向我们展示您调用'calculateMinAndMaxXYZ()'方法的代码。 – cdhowie 2014-10-31 16:34:37

+0

你使用什么编译器?无论你想使用哪种标志来消除优化,它都是你想要的。 – 2014-10-31 16:37:57

+0

它看起来像Microsoft Visual Studio 2013 – Vincent 2014-10-31 16:39:16

回答

2

事实证明,我从来没有在AssetInstance初始化vertices矢量,所以我试图存取权限vertices.at(0)这并不存在。