Beim Kompilieren einer 3rd-Party-Bibliothek, bekomme ich "Fehler: Anfangswert der Referenz auf nicht-const muss ein Lvalue sein". Der Fehler wird auftreten, in einer C++ Klassendefinition in dieser Deklaration einer Elementfunktion:Fix 3rd Party Library Code Initialisierung einer Klassenmember Funktion Referenz Parameter mit einer Konstante
bool intersectsHierarchy(ON_Ray& ray, std::list<BVNode<ON_BoundingBox>*>& results = 0);
Basierend auf Informationen, die ich im Internet gefunden, ich versuchte, den initialisierten Parameter sein const zu machen, wie folgt:
bool intersectsHierarchy(ON_Ray& ray, const std::list<BVNode<ON_BoundingBox>*>& results = 0);
Aber das verursacht nur einen anderen Kompilierungsfehler.
Irgendwelche Ideen, wie Sie das am besten beheben und meine Bibliothek kompilieren können?
Sie sich von der '= 0 'befreien Teil im ersten Beispiel? Ist das dein Code oder jemand anderes? – NathanOliver
Dies ist der Bibliothekscode von Drittanbietern, also von jemand anderem. Ich bin besorgt, wenn ich den Initialisierungswert 0 los werde, werde ich einen Fehler erstellen. –
'0' und' std :: list *> 'sind verschiedene Typen, und letzterer ist nicht von ersteren konstruierbar (außer wenn * explizit * ein kompatibler c'tor aufgerufen wird). Dies ist ein Fehler, den kein kompilierbarer Compiler sowieso übersetzen sollte. –
IInspectable