在C++中定义包含TTF_Font变量的向量时"Undefined size"错误

"Undefined size" error when defining a vector containing TTF_Font variables in C++

本文关键字:向量 Undefined 错误 size 变量 Font C++ 定义 包含 TTF      更新时间:2023-10-16

我尝试在包含许多TTF_Font变量的类中定义一个向量,如下所示: std::vector<TTF_Font> *fonts = &std::vector<TTF_Font>(); 这给了我一个错误,指出"'_TTF_Font *const ':未知大小。我还尝试在括号内添加一个整数来定义大小,但这无济于事。此外,我还以相同的方式定义了多个其他变量(例如 std::vector<int> *xposes = &std::vector<int>();(,它们工作得很好。关于我可以做些什么来让包含字体的矢量工作(最好不必定义大小(的任何想法?

使用 std::vector<int> *xposes = &std::vector<int>(); 创建矢量对象将无法正常工作,因为xposes设置为临时对象,之后会立即销毁。在某些简单的情况下,程序可能仍会正确运行,具体取决于编译器,但这是未定义的行为,因为调用了矢量对象的析构函数,并且xposes是一个悬空指针,指向不再存在的对象。

相反,应该使用std::vector<int> xposes;

TTF_Font是不透明的类型,这意味着它是一个定义不可用的struct。因此,只有指针TTF_Font*才能被使用SDL_ttf的程序使用。错误消息表示sizeof(TTF_Font)不起作用,因此无法创建std::vector<TTF_Font> 。相反,指针向量std::vector<TTF_Font*>可以工作。