繁体   English   中英

用new初始化typedef结构

[英]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*();

此修复程序实际上有效,但是我不明白为什么需要它。

  1. 我不明白为什么GLFWwindow结构不完整,或者为什么要进行前向声明。 似乎某些东西未正确声明。 我到底做错了什么?
  2. 当给定一个类型的指针时,operator new在做什么?

提前Thx

正如其他人所说,您不能直接使用new创建GLFWindow ,因为它只是声明的,没有定义的。

实际上,它用作不透明类型 ,您应该仅使用GLFW函数来对其进行操作。 例如,您可以使用glfwCreateWindow()函数创建一个窗口,即:

GLFWwindow* window = glfwCreateWindow(...);

您需要结构的定义才能实例化它。 但是您似乎只有一个声明 (缺少#include ?)。

我相信您的“修复程序”可以编译,但实际上不起作用 :它为结构分配了新的指针,但没有创建要指向的结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM