我一直在研究一個我現在面臨的bug,事實證明,C++在運行時(並調用主函數)之前初始化類。然而,我的程序是一個opengl程序,需要在完成其他任何事情之前設置某些東西。是否有任何方法可以解決這個問題?問題很簡單,但這裏有一些pseudo/C++代碼:C++執行流程
class shader
{
shader() { /* constructor... DEPENDS ON GL SET UP! But called first!*/ }
}
// global/static shaders
shader geometry;
shader lighting;
int main()
{
glewInit(); // initialize opengl
}
編輯:增加了一些基於評論的信息。是的,我的着色器類是靜態的,它們是問題。唯一的解決辦法是在main初始化完成後將這些靜態類轉換爲指針並分配它們?或者有沒有辦法延遲初始化?
單獨的代碼不會調用構造函數。你大概也有一個靜態存儲持續時間的'shader'類型的對象。 – aschepler
是的,我所有的着色器都是靜態的。所以他們正在我的主要功能之前構建? – Jas
僞代碼不會幫助。請提供[MCVE](http://stackoverflow.com/help/mcve)來演示。這聽起來像你正在使用靜態,這是在你輸入'main'之前初始化的。 – paddy