2016-08-03 29 views
1

在我的節目,我有一個創建另外一個SF ::文本字符串的輪廓是如下的功能:sf ::文本成員函數getFont()不起作用?

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()的代碼行,以便它能夠工作?所有其他代碼行都可以正常工作。

回答

3

就像你懷疑,問題是sf::Text::getFont返回指針Font,而sf::Text::setFont預計到Font參數作爲一個參考。指針!=參考,因此你得到一個錯誤。

解決方法很簡單:取消引用(使用*運營商)通過getFont返回的指針:

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

非常感謝你 – WakeUpToFlatEarth