在我的程序中,我有一个函数创建另一个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);
}
我想复制文字的字体,但是我收到了这个错误:
&#39;没有合适的构造函数可以转换为&#34; const sf :: Font *&#34; to&#34; sf :: Font&#34;&#39;。
我查看了sfml文档,我相信问题在于getFont()使用指针而不是引用。我不知道如何实现这一点。如何改进使用setFont()和getFont()的代码行,以便它可以工作?所有其他代码行都能正常工作。
答案 0 :(得分:3)
就像您怀疑的那样,问题是sf::Text::getFont
会将指针返回给Font
,而sf::Text::setFont
需要引用以Font
作为参数。指针!=引用,因此出错。
解决方案很简单:取消引用(使用*
运算符)getFont
返回的指针:
textDisplay2.text.setFont(*textDisplayVector.back().text.getFont());
// ^
// |
// Notice the dereference operator here