2017-04-30 1 views
0

Ich versuche, die Beispiele in dem Buch "SFML Game Development" zu schreiben, aber ich habe ein Problem mit den Lebenszeiten für die Struktur, die die Spielwelt darstellen soll. Der Fehler ist wie folgt:Compiler fragen nach Lebenszeit in der Struktur, wenn Lebensdauer gegeben ist

extern crate sfml; 

use self::sfml::window::*; 
use self::sfml::graphics::*; 

pub struct Game<'s> { 
    mWindow: RenderWindow, 
    mPlayer: &'s CircleShape, 
} 

Fehlermeldung:

error[E0106]: missing lifetime specifier 
--> src/game.rs:8:18 
    | 
8 |  mPlayer: &'s CircleShape, 
    |     ^^^^^^^^^^^ expected lifetime parameter 

Warum ist es ein Leben lang gefragt, ob ich es eine gegeben habe?

+0

Siehe auch [Wie behebe ich einen fehlenden Lifetime-Spezifizierer?] (Http://stackoverflow.com/q/43330616/155423) – Shepmaster

Antwort

3

Warum fragt es für ein Leben, wenn ich es gegeben habe?

Weil Sie es nicht die Lebensdauer gegeben haben, wo es gebraucht wird. Schauen Sie sich die Fehlermeldung genau an. Es sagt Ihnen, dass CircleShape eine Lebenszeit fehlt, nicht die Referenz zu CircleShape (obwohl das auch benötigt wird).

Überprüfen Sie die Definition von CircleShape:

pub struct CircleShape<'s> { /* fields omitted */ } 

Es wurde durch eine lebenslange parametriert, so dass Sie ein zur Verfügung stellen müssen:

pub struct Game<'s> { 
    mWindow: RenderWindow, 
    mPlayer: &'s CircleShape<'s>, 
} 

Ob das richtige für Ihren Fall, kann ich Sag es nicht, aber es sollte kompilieren.

Verwandte Themen