Ich verwende den folgenden Code in einer ROS-Anwendung.Konstruktor-Referenzparameter führt zu Seg-Fehler
class RobotisController
{
private:
....
public:
ros::NodeHandle pxxx;
}
RobotisController::RobotisController(ros::NodeHandle& nh) : pxxx(nh)
{
packetHandlerList.push_back(PacketHandler::getPacketHandler(1.0));
packetHandlerList.push_back(PacketHandler::getPacketHandler(2.0));
}
class RosWrapper {
protected:
Robotis::RobotisController controller_;
ros::NodeHandle nh_;
....
public:
RosWrapper() :
controller_(nh_) {}
}
main()
{
RosWrapper interface;
}
Wenn ich den obigen Code ausführen, führt es zu einem SIGSEGV. Ich habe versucht, den Code zu debuggen und als ich den Konstruktor des RobotisController 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.
Wow .. Das ist ein dummer Fehler von mir war .. Danke .. – Lonewolf
@Lonewolf Sie sind willkommen. :) – songyuanyao