2014-12-07 56 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