gpt4 book ai didi

macos - 错误 : functions that differ only in their return type cannot be overloaded

转载 作者:行者123 更新时间:2023-12-04 12:21:43 26 4
gpt4 key购买 nike

我使用的是 mac os 10.9,我有一个使用 freeglut 库的 C++ 程序。当我尝试制作该项目时。它给出了一个错误,我不知道这是不是我的错。这是消息:

In file included from /usr/X11/include/GL/freeglut.h:18:
/usr/X11/include/GL/freeglut_ext.h:177:27: error: functions that differ only in their return type cannot be overloaded
FGAPI GLUTproc FGAPIENTRY glutGetProcAddress( const char *procName );

更多信息:我使用 cmake(2.8.12 版)生成 Makefile,安装了最新版本的 Xcode 和 XQuartz。
任何帮助表示赞赏。谢谢你。

在 glut.h 和 freeglut_ext.h 文件中:
在 glut.h 中:
#if (GLUT_API_VERSION >= 5)
extern void * APIENTRY glutGetProcAddress(const char *procName) OPENGL_DEPRECATED(10_3, 10_9);
#endif

在 freeglut_ext.h 中:
/*
* Extension functions, see freeglut_ext.c
*/
typedef void (*GLUTproc)();
FGAPI GLUTproc FGAPIENTRY glutGetProcAddress( const char *procName );

最佳答案

其中一个声明返回函数类型 GLUTproc (指定一个不带参数的函数),另一个声明返回一个指针( void* )。两个函数都采用相同的参数(单个 const char* )。编译器说的是真的。

您只会看到有关“重载”的提示,因为它是 C++。在 C++ 中,如果编译器认为它看到了两个具有相同名称的不同函数,那么每个函数都需要有不同的参数(例如,不同数量的参数或不同的类型)。

在这种情况下,我怀疑这些功能是否应该有所不同;它们应该是相同的,并且在某些时候 API 演变并更改了声明。

您需要找到某种方法来防止编译器同时看到两个声明(可能通过设置 GLUT_API_VERSION )。如果需要,您可以#include只是其中一个文件,看看您是否真的需要另一个文件(如果需要,您可能需要手动声明一些内容以避免第二个 #include )。

关于macos - 错误 : functions that differ only in their return type cannot be overloaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com