我正在尝试创建类型为unique_ptr
的{{1}},但是由于SDL_Cursor
的定义在SDL的.dll文件之一之内而无法执行。
SDL_Cursor
所以我不断收到错误消息:
不允许使用E0070不完整的类型
使用未定义类型'SDL_Cursor'
是否有任何方法可以从.dll文件中提取typedef struct SDL_Cursor SDL_Cursor;
的定义来避免此错误?
这是我尝试过的:
SDL_Cursor
我知道我也将为#include <memory>
#include "SDL.h"
SDL_Cursor* p = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW); - How it is usually created
SDL_Cursor* p = new SDL_Cursor(); - Undefined type error.
std::unique_ptr<SDL_Cursor> unique = std::unique_ptr<SDL_Cursor>(new SDL_Cursor()); - Undefined type error.
提供一个自定义删除器(SDL_FreeCursor
),但是由于此错误,即使这样目前也无法正常工作。
如何获得unique_ptr
的定义?
答案 0 :(得分:2)
有很多原因使您真正不想获取SDL隐藏的类型。即使您知道了这一点,它也可能在将来的SDL版本中发生变化,即使在这种情况下,new
ing游标也无法实现。在任何情况下,请使用SDL创建/销毁功能,例如:
std::unique_ptr<SDL_Cursor, decltype(&SDL_FreeCursor)> p = {SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW), SDL_FreeCursor};