我已经尝试在包含许多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
,其定义不可用。因此,使用SDL_ttf的程序只能使用指针TTF_Font*
。错误消息意味着sizeof(TTF_Font)
不起作用,因此无法创建std::vector<TTF_Font>
。相反,指针std::vector<TTF_Font*>
的矢量将起作用。