我目前正在学习OpenGL,我对C++还是很陌生。我的问题是为什么在这里使用指针。
GLFWwindow *mainWindow = glfwCreateWindow(WIDTH, HEIGHT, "Test Window", NULL, NULL);
我知道了什么是指针,而不是为什么在这里使用它们。所有的答案表示赞赏,谢谢。
最佳答案
glfwCreateWindow()
没有固有的必要返回指向窗口的指针,而不是返回实际的窗口。可能已经设计了OpenGL库,以使代码看起来有所不同,例如:
GLFWwindow mainWindow = glfwCreateWindow(WIDTH, HEIGHT, "Test Window", nullptr, nullptr);
或者实际上,仅使用
GLFWindow
的构造:GLFWwindow mainWindow { WIDTH, HEIGHT, "Test Window", nullptr, nullptr };
尽管如此,采用这种方式设计API的原因可能有几个:
T
的值,则从理论上讲,您可能需要将在函数内创建的T
复制到调用该函数的代码的目标位置。在您的情况下-返回GLFWwindow
可能需要复制GLFWwindow
;这对于库可能是有问题的(我不知道OpenGL,所以我不知道)。 T*
时,指向的对象可以是“为T”的任何对象-表示从T
(!)继承的任何类型。而如果您返回一个简单的T
-您将无法返回继承类型。因此,如果存在一个GLFWwindow
的类层次结构,它们都从GLFWwindow
继承为基类-可以返回指向该基类的指针,以便您进行一般处理。 PS-具有五个构造函数参数,并传递使不清楚哪个构造函数参数被设置的参数是有问题的设计。具体来说-我们无法说出第一个
nullptr
的含义,也无法分辨出第二个nullptr
的区别。
关于c++ - 为什么我们为glfwCreateWindow使用指针? -OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57982836/