[英]Initialization of typedef struct with new
我正在使用GLFW并创建一个GLFWwindow,在其标题“ glfw3.h”中声明如下:
typedef struct GLFWwindow GLFWwindow;
通常,在堆上初始化结构时,我会执行以下操作:
GLFWwindow *window = new GLFWwindow();
这给我以下错误:无效使用不完整类型'GLFWwindow {aka struct GLFWwindow}',向前声明'GLFWwindow {aka struct GLFWwindow}'
这是我解决该问题的方法:
GLFWwindow **window = new GLFWwindow*();
此修复程序实际上有效,但是我不明白为什么需要它。
提前Thx
正如其他人所说,您不能直接使用new
创建GLFWindow
,因为它只是声明的,没有定义的。
实际上,它用作不透明类型 ,您应该仅使用GLFW函数来对其进行操作。 例如,您可以使用glfwCreateWindow()函数创建一个窗口,即:
GLFWwindow* window = glfwCreateWindow(...);
您需要结构的定义才能实例化它。 但是您似乎只有一个声明 (缺少#include
?)。
我相信您的“修复程序”可以编译,但实际上不起作用 :它为结构分配了新的指针,但没有创建要指向的结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.