我正在使用GLFW并创建一个GLFW窗口,该窗口在其头部" glfw3.h"中声明。像这样:
typedef struct GLFWwindow GLFWwindow;
通常,在堆上初始化结构时,我会这样做:
GLFWwindow *window = new GLFWwindow();
这给了我以下错误: 无效使用不完整类型'GLFWwindow {aka struct GLFWwindow}', 'GLFWwindow {aka struct GLFWwindow}'
的前向声明以下是我对此问题的解决方法:
GLFWwindow **window = new GLFWwindow*();
此修复确实有效,但我不明白为什么需要它。
提前谢谢
答案 0 :(得分:5)
正如其他人所说,你不能用GLFWindow
直接创建new
,因为它只是声明,而不是定义。
实际上,它用作opaque type,你应该只使用GLFW函数来操作它。例如,您可以使用glfwCreateWindow() function创建一个窗口,即:
GLFWwindow* window = glfwCreateWindow(...);
答案 1 :(得分:3)
您需要结构的定义才能实例化它。但是您似乎只有声明(缺少#include
?)。
我相信你的'修复'会编译,但它实际上并不是工作:它会为结构分配一个新指针,但它不会创建一个指向的结构。