Konstruktorreferenzparameter führt zu Seg-Fehler

8

Ich verwende den folgenden Code in einer ROS-Anwendung.

%Vor%

Wenn ich den obigen Code ausführe, führt das zu einem SIGSEGV. Ich habe versucht, den Code zu debuggen und als ich den Konstruktor des RobotisControllers erreiche, finde ich, dass die Variable, die an den Konstruktor nh übergeben wird, cannot access memory anzeigt, aber der Speicher ist bereits in der Klasse RosWrapper zugewiesen.

    
Lonewolf 20.04.2016, 03:28
quelle

1 Antwort

8

Die Member-Variablen werden in der Reihenfolge der Deklaration in der Klassendefinition initialisiert. Das heißt nh_ wird nach controller_ initialisiert. Übergeben Sie also ein nicht initialisiertes nh_ , da das Argument zum Initialisieren von controller_ zu UB führt.

Sie können die Reihenfolge der Deklaration ändern:

%Vor%     
songyuanyao 20.04.2016, 03:32
quelle

Tags und Links