sf ::文本成员函数getFont()不起作用?

时间:2016-08-03 17:09:31

标签: c++ pointers sfml member-functions

在我的程序中,我有一个函数创建另一个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()的代码行,以便它可以工作?所有其他代码行都能正常工作。

1 个答案:

答案 0 :(得分:3)

就像您怀疑的那样,问题是sf::Text::getFont会将指针返回给Font,而sf::Text::setFont需要引用Font作为参数。指针!=引用,因此出错。

解决方案很简单:取消引用(使用*运算符)getFont返回的指针:

textDisplay2.text.setFont(*textDisplayVector.back().text.getFont());
//                        ^
//                        |
// Notice the dereference operator here