2014-10-31 51 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)這並不存在。