我有一個類與靜態變量。因爲我需要一個構造函數,是不是默認的,我開始有點困惑,但我希望我做得很好靜態C++變量,沒有默認構造函數,失去了值
類
class Object3D{
public:
static Object3D ObjControl;
Object3D(); //this is here just for the initialization of the static variable
Object3D(Triangle *mesh);
Triangle *mesh;
};
在這一點上我需要創建一個Object3D和我做如下
bool Engine::OnInit() {
if(SDL_Init(SDL_INIT_EVERYTHING) < 0) {
return false;
}
if((Surf_Display = SDL_SetVideoMode(WIDTH, HEIGTH, BBP, FLAGS)) == NULL) {
return false;
}
arma::colvec::fixed<3> upDirection;
upDirection << 0 << 1 << 0;
Camera cam(0.0, 0.0, 10.0, 10.0, 200.0, 90.0, upDirection);
Camera::CameraControl = cam;
arma::colvec::fixed<3> vertexA;
vertexA << -1 << 1 << 0;
arma::colvec::fixed<3> vertexB;
vertexB << 1 << 1 << 0;
arma::colvec::fixed<3> vertexC;
vertexC << 0 << -1 << 0;
Triangle tri(vertexA, vertexB, vertexC);
Triangle mesh[1];
mesh[0] = tri;
Object3D obj(mesh);
Object3D::ObjControl = obj; // PROBLEM! -> when the function extis from the OnInit ObjControl doesn't have anything inside.. it is like cleaned at the exit
return true;
}
問題是在返回之前插入註釋中的問題。
然後當我需要將該對象傳遞給渲染函數時,如下所示;在應用程序關閉,因爲我試圖訪問未初始化
void Engine::OnRender(){
Rendering.WfRender(Object3D::ObjControl, Surf_Display, 1);
}
我覺得我做錯了什麼與靜態變量的存儲位置,但我做了一個攝像頭類的靜態變量相同,正如你可以在Engine :: OnInit中看到的,那裏一切正常。所以我不知道發生了什麼事情。
是的,是的。我將線框渲染編碼爲賦值。感謝您提供最後的建議。無論如何是的,我必須更多地關注動態分配內存和範圍內容 – KKyK
好的,我已經修復了它。我沒有意識到靜態變量的一些問題。我正在初始化它,但沒有按照它應有的方式使用它。無論如何現在它是好的。感謝您的辛勤工作! 總是很高興張貼在這裏! :) – KKyK