[英]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.