sf::Text 成员函数getFont() 不起作用?
sf::Text member function getFont() doesn't work?
在我的程序中,我有一个函数可以创建另一个 sf::Text 字符串的轮廓,如下所示:
void textDisplay::createOutline(std::vector<textDisplay> &textDisplayVector, std::vector<textDisplay> &textDisplayVector2, textDisplay &textDisplay2)
{
//create text2 npc dialogue outline
textDisplay2.text.setString(textDisplayVector.back().text.getString());
textDisplay2.text.setPosition(textDisplayVector.back().text.getPosition().x + 1, textDisplayVector.back().text.getPosition().y + 1);
textDisplay2.text.setCharacterSize(textDisplayVector.back().text.getCharacterSize());
textDisplay2.text.setColor(sf::Color::Black);
//textDisplay2.text.setFont(textDisplayVector.back().text.getFont());
textDisplayVector2.push_back(textDisplay2);
}
我也想复制文本的字体,但出现此错误:
'no suitable constructor exists to convert from "const sf::Font *" to "sf::Font"'。
我查看了 sfml 文档,我认为问题在于使用指针而不是引用的 getFont()。我不知道如何实现这个。如何改进使用 setFont() 和 getFont() 的注释掉的代码行,使其正常工作?所有其他代码行都可以正常工作。
就像您怀疑的那样,问题是 sf::Text::getFont
returns a pointer to a Font
, while sf::Text::setFont
期望 reference 到 Font
作为参数。指针 != 引用,因此你会得到一个错误。
解决方案很简单:取消引用(使用 *
运算符)getFont
:
返回的指针
textDisplay2.text.setFont(*textDisplayVector.back().text.getFont());
// ^
// |
// Notice the dereference operator here
在我的程序中,我有一个函数可以创建另一个 sf::Text 字符串的轮廓,如下所示:
void textDisplay::createOutline(std::vector<textDisplay> &textDisplayVector, std::vector<textDisplay> &textDisplayVector2, textDisplay &textDisplay2)
{
//create text2 npc dialogue outline
textDisplay2.text.setString(textDisplayVector.back().text.getString());
textDisplay2.text.setPosition(textDisplayVector.back().text.getPosition().x + 1, textDisplayVector.back().text.getPosition().y + 1);
textDisplay2.text.setCharacterSize(textDisplayVector.back().text.getCharacterSize());
textDisplay2.text.setColor(sf::Color::Black);
//textDisplay2.text.setFont(textDisplayVector.back().text.getFont());
textDisplayVector2.push_back(textDisplay2);
}
我也想复制文本的字体,但出现此错误:
'no suitable constructor exists to convert from "const sf::Font *" to "sf::Font"'。
我查看了 sfml 文档,我认为问题在于使用指针而不是引用的 getFont()。我不知道如何实现这个。如何改进使用 setFont() 和 getFont() 的注释掉的代码行,使其正常工作?所有其他代码行都可以正常工作。
就像您怀疑的那样,问题是 sf::Text::getFont
returns a pointer to a Font
, while sf::Text::setFont
期望 reference 到 Font
作为参数。指针 != 引用,因此你会得到一个错误。
解决方案很简单:取消引用(使用 *
运算符)getFont
:
textDisplay2.text.setFont(*textDisplayVector.back().text.getFont());
// ^
// |
// Notice the dereference operator here