我使用GLFW处理应用程序中的窗口事件。它工作得很好。后来,我决定从GLFWwindow开始删除原始指针。它在文件glfw3.h中定义为:
typedef struct GLFWwindow GLFWwindow;
我在头文件中找不到结构的实际定义。所以我假设这是一种前置声明,但我不知道为什么它不像
struct GLWwindow;
我尝试用后一种形式的远期声明来代替前一种形式。它编译得很好。前一种形成远期申报的pro是什么?
所以真正的问题是,由于结构GLFWwindow只是一个声明,唯一指针不能在没有定义的情况下完成模板专门化。我不能使用unique_ptr声明任何指针。编译器给了我一个错误
C2027 use of undefined type 'GLFWwindow'
C2338 can't delete an incomplete type
C4150 deletion of pointer to incomplete type 'GLFWwindow';no destructor called
有人知道如何使用独特的指针与GLFW窗口?
谢啦
但我不知道为什么它不是…
这是因为GLFW是用C编写的,而不是C。这两种语言完全不同,在声明方面有一些重叠,但即使如此,也有很大的不同,正如您所看到的。
在C #中,< code>struct和< code>enum都存在于它们自己的标记命名空间中,您必须显式编写< code > struct name _ of _ the _ struct…或< code > enum name _ of _ the _ enum…才能使用它。通过声明此类型定义< code>typedef struct … …,可以将该结构拉入常规变量和类型命名空间。有铁杆C程序员(包括我)认为,这不应该这样做。如果你写的是,你写的是,如果你写的是,你写的是,不会有混淆这两者的危险。
前一种前期申报的形成有什么好处?
在编写C时节省一些按键。就是这样…
所以真正的问题是,由于GLFWwindows的结构只是一个声明,唯一的指针不能在没有定义的情况下完成模板专业化。我不能使用unique_ptr声明任何指针。
unique_ptr
不仅仅是拥有结构定义。一unique_ptr
(由我强调):
std::unique_ptr是一个智能指针,它通过指针保留对象的唯一所有权,并在unique_ptr超出范围时销毁该对象。没有两个unique_ptr实例可以管理同一个对象。
销毁是通过调用对象上的<code>delete</code>来实现的,后者反过来调用析构函数。在Cstruct
s中,默认情况下都是公共的class
es,因此构造函数/析构函数语义按预期工作。但在普通C中,结构只是普通内存。因此,unique_ptr
的语义实际上并不适用。您需要一些辅助类,以增强构造函数/析构函数语义。见ratchet_freak的答案。
您需要将删除器提供给唯一的 ptr:
struct DestroyglfwWin{
void operator()(GLFWwindow* ptr){
glfwDestroyWindow(ptr);
}
}
std::unique_ptr<GLFWwindow, DestroyglfwWin> my_window;
使用typedefed智能指针会很方便。
typedef std::unique_ptr<GLFWwindow, DestroyglfwWin> smart_GLFWwindow;
smart_GLFWwindow my_window;
有没有办法在使用 jongo 查询 MongoDB 时添加 ?我发现这样的错误 - '排序超出了 104857600 字节的内存限制,但没有选择加入外部排序。正在中止操作。传递 allowDiskUse:true 可以选择加入,可以通过以下方式阻止,您的聚合看起来像 但据我所知,Jongo 中的类仅将管道应用于自身,然后您可以使用 方法执行。 是否有任何方法可以将该参数传递给mongo而不从Jon
问题内容: 我在远程服务器上有一个管理Web应用程序。该应用程序是使用MEAN堆栈编写的,我列出了连接到Web应用程序所需的所有RESTful路由。 我正在编写一个Java客户端应用程序,该应用程序需要从该管理应用程序发送和接收数据。如果我具有服务器的IP地址和REST路由,如何将客户端连接到Web应用程序? 我想我需要提供到服务器和REST API文件的URL连接,然后仅调用诸如和的路由功能。
问题内容: 我使用spring数据和方法来获取模型。调用此方法时如何使用查询提示? 上面的源代码工作正常,但是我不能为我的JPA提供程序(在我的情况下为EclipseLink)设置QueryHint。 以上是我使用spring-data使用查询提示的方式, 我还发现了这个尚未解决的问题。 问题答案: 当我想使用spring-data创建查询时,请遵循上述算法。 1)是否已经提供的查询 通过弹簧数据
我使用spring数据和方法获取模型。调用此方法时如何使用查询提示 上面的源代码运行良好,但我无法为我的JPA提供者(在我的例子中是EclipseLink)设置QueryHint。 我使用spring数据使用查询提示的方式如下:, 我也发现这个还没有解决。
通过io的requestAbs方法调用/调用/使用REST API的vertx实现。vertx。果心http。vertx-core-3.2.0中的HttpClient类。jar导致HTTP错误::302,响应数据为HTML Erro响应。 不确定requestAbs方法的行为,因为没有引发异常,也没有写入任何日志。此外,还随附了使用vertx JAR的此方法的源代码。如果方法实现有bug,是否有问
问题内容: 说我有: 我该如何使用表单外部的“提交”按钮提交该表单,我认为在HTML5中有一个“提交”的动作属性,但是我不确定那是否是完全跨浏览器的,如果不是这样的话,做这个? 问题答案: 一个对我来说很好的解决方案,在这里仍然缺少。它需要具有目视隐藏或元件whithin的,和相关的它元件外部。它看起来像这样: 现在,此链接使您可以通过单击元素来“单击”表单元素。