簡體   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