【问题标题】:sf::Text member function getFont() doesn't work?sf::Text 成员函数 getFont() 不起作用?
【发布时间】:2016-12-09 12:59:58
【问题描述】:

在我的程序中,我有一个函数可以创建另一个 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);
}

我还想复制文本的字体,但出现此错误:

'不存在合适的构造函数来将“const sf::Font *”转换为“sf::Font”'。

我查看了 sfml 文档,我认为问题在于使用指针而不是引用的 getFont()。我不知道如何实现这一点。如何改进使用 setFont() 和 getFont() 的注释掉的代码行以使其正常工作?所有其他代码行都正常工作。

【问题讨论】:

    标签: c++ pointers sfml member-functions


    【解决方案1】:

    正如您所怀疑的那样,问题在于sf::Text::getFont 返回一个指向Font指针,而sf::Text::setFont 期望一个指向Font引用争论。指针 != 引用,因此会出现错误。

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      相关资源
      最近更新 更多