gpt4 book ai didi

c++ - 在 C++ 中定义包含 TTF_Font 变量的 vector 时出现 "Undefined size"错误

转载 作者:行者123 更新时间:2023-11-27 23:40:16 25 4
gpt4 key购买 nike

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

最佳答案

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

改为std::vector<int> xposes;应该使用。

TTF_Font是不透明类型,意味着它是 struct其定义不可用。所以只有指针TTF_Font*可以由使用 SDL_ttf 的程序使用。错误消息意味着 sizeof(TTF_Font)不起作用,因此无法创建 std::vector<TTF_Font> .取而代之的是指针 vector std::vector<TTF_Font*>会工作。

关于c++ - 在 C++ 中定义包含 TTF_Font 变量的 vector 时出现 "Undefined size"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55668950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com