c++ - sf::Text 成员函数 getFont() 不起作用?

标签 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);
}

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

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

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

最佳答案

如您所料,问题在于 sf::Text::getFont返回一个指向字体指针,而sf::Text::setFont期望对 Font引用 作为参数。 Pointer != reference,因此你会得到一个错误。

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

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

关于c++ - sf::Text 成员函数 getFont() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38749802/

相关文章:

c++ - 如何理解 "C++ allows sizeof(char*) != sizeof(int*)"?

c++ - 在 C++ 代码中接收段错误

c++ - 对于 C++ 中的指针,delete 命令真正对内存有什么作用?

c++ - 在使用pthread_create 创建的线程之间读写管道时是否需要关闭fds?

c++ - 为什么在这个例子中有 "for(auto& x : v)"而不是 "for(auto x : &v)"?

c++ - SFML 2.1 架构 x86_64 错误的 undefined symbol

c++ - 使用 GLM 的最佳 glMatrixMode() 是什么?

c++ - 在 C++ 中是否有符合标准的方法来指定字段偏移量?

c++ - read_some() 工作但很慢, read() 没有

c++ - 不处理指针时调用子类(虚拟)函数(后期绑定(bind))