2014-12-07 52 views
2

我正在關注用C編寫的An intro to modern OpenGL。但是,我用C++編寫。'file_contents()'不返回類型GLchar

我已經達到2.2章節,並不能得到進一步的,因爲這行代碼:

GLchar * source = file_contents(filename, &length); 

編譯這將返回「無法分配‘無效’到‘GLchar *’」(我可能會被意譯)

我查找「file_util.c」中的「file_contents」函數,唯一標記爲「file_contents」的函數是一個不返回任何內容的「void」函數。

+1

你是什麼意思,它只是一個「無效函數?」它是否需要'void'作爲參數?這通常意味着什麼。 – 2014-12-07 13:20:25

+0

你可以添加'file_contents'聲明嗎?理想情況下,您需要創建一個[MCVE](http://stackoverflow.com/help/mcve),以便其他人可以更好地理解您的問題。 – Shepmaster 2014-12-27 03:16:54

+0

此外,如果您的教程在線可用,則應該添加一個鏈接。 – Shepmaster 2014-12-27 03:20:14

回答

3

只是類型化它。在C void*指針隱式地對所有其他指針類型進行類型轉換。在C++中,你必須明確這一點。

GLchar * source = (GLchar*)file_contents(filename, &length); 
+0

這只是給我「虛空*不能轉換成GLchar *」的錯誤。 – 2014-12-08 02:05:17

+1

@ user3391187:這是一個返回void指針的函數,並且指針類型*之間必須有明確的轉換。但是也許你的C++編譯器需要一些說服力。通常你會使用它作爲類實例,但它也可以幫助你。 'GLchar * source = static_cast (file_contents(...));'如果這樣做效果不好,你的程序或編譯設置就會出現一些嚴重的其他問題。 – datenwolf 2014-12-08 08:01:35