"Undefined size" 在 C++ 中定义包含 TTF_Font 变量的向量时出错
"Undefined size" error when defining a vector containing TTF_Font variables in C++
我尝试在 class 中定义一个向量,其中包含许多 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*>
会起作用。
我尝试在 class 中定义一个向量,其中包含许多 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*>
会起作用。