2016-08-03 3 views
1

In meinem Programm Ich habe eine Funktion, die einen Umriss eines anderen sf :: Textzeichenfolge, die wie folgt erstellt:sf :: Text-Member-Funktion getFont() funktioniert nicht?

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

Ich möchte auch den Text der Schrift kopieren, aber ich bekomme diese Fehlermeldung:

'Es existiert kein passender Konstruktor zur Konvertierung von "const sf :: Font *" nach "sf :: Font"'.

Ich schaute auf die sfml-Dokumentation und ich glaube, das Problem liegt bei getFont() mit einem Zeiger anstelle einer Referenz. Ich habe keine Ahnung, wie ich das umsetzen soll. Wie kann diese Codezeile, die setFont() und getFont() verwendet, so verbessert werden, dass sie funktioniert? Alle anderen Codezeilen funktionieren ordnungsgemäß.

Antwort

3

Wie Sie vermuten, das Problem ist, dass sf::Text::getFont gibt einen Zeiger zu einem Font, während sf::Text::setFont eine Referenz erwartet zu einem Font als Argument. Zeiger! = Verweis, daher erhalten Sie einen Fehler.

Die Lösung ist einfach: Dereference (mit dem * Operator) den Zeiger zurück von getFont:

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

vielen Dank – WakeUpToFlatEarth

Verwandte Themen