2013-06-04 109 views
0

我經歷了題爲看似通俗讀物分享esContext「ES 2.0編程指南」。在本書中,有一個用於繪製三角形的簡單ES 2.0程序的示例代碼。這是給我編的問題程序的一個片段:的OpenGL ES 2.0的C++

int Init (ESContext *esContext) 
{ 
    UserData *userData = esContext->userData; 
    //etc... rest of the function 
} 

當我嘗試編譯,3號線在這裏給出了一個錯誤C2440:不能轉換void *的到的UserData *

有一對夫婦錯誤在後面的程序,我懷疑可能涉及:

// Load the vertex/fragment shaders 
    vertexShader = LoadShader (GL_VERTEX_SHADER, vShaderStr); 
    fragmentShader = LoadShader (GL_FRAGMENT_SHADER, fShaderStr); 

這裏,編譯器與vShaderStr和fShaderStr問題:GLbyte *是類型爲const char的PARAM不兼容*

轉換出了什麼問題?爲什麼esContext-> userData給出問題?

示例代碼呈現在C.我試圖在C++編譯,但我不知道這是如何準確地影響它,如果它是。

誰能給我一些指導?這裏是否有C組件不受C++支持?是否有某種C++組件正在創建錯誤?

感謝您的幫助!完整的示例代碼是可查看的here

+0

你有一個轉換」:不能從轉換‘類型1’到‘2型’。看看這個鏈接:http://msdn.microsoft.com/en-us/library/sy5tsf8z(v=vs.100).aspx –

回答

0

C和C++之間的主要不兼容之一在於類型轉換。

特別是在C中,您可以自由地將void*轉換爲任何其他指針類型,而無需進行強制轉換。這種自由並不在C++中存在:有你需要一個強制轉換爲void*轉換爲別的。

+0

哦!非常感謝。這幾乎肯定會解決問題。再次感謝! – 2013-06-04 17:16:33