使用new初始化typedef结构

use*_*494 -1 c++ struct pointers new-operator glfw

我正在使用GLFW并创建一个GLFWwindow,它在它的标题"glfw3.h"中声明如下:

typedef struct GLFWwindow GLFWwindow;

通常,在堆上初始化结构时,我会执行以下操作:

GLFWwindow *window = new GLFWwindow();
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:无效使用不完整类型'GLFWwindow {aka struct GLFWwindow}','GLFWwindow {aka struct GLFWwindow}'的前向声明

这是我对该问题的修复:

GLFWwindow **window = new GLFWwindow*();

这个修复实际上有效,但我不明白为什么我需要它.

  1. 我不明白为什么struct GLFWwindow不完整或为什么我做前瞻声明.似乎没有正确宣布某些事情.究竟我做错了什么?
  2. 当给出指向类型的指针时,操作员新做什么?

Thx提前

Ant*_*vin 5

因为它是由别人说,你不能直接创建GLFWindownew,因为它只是声明,没有定义.

实际上,它用作opaque类型,并且您应该仅使用GLFW函数来操作它.例如,您可以使用glfwCreateWindow()函数创建一个窗口,即:

GLFWwindow* window = glfwCreateWindow(...);
Run Code Online (Sandbox Code Playgroud)