Aşağıdaki kodu bir ROS uygulamasında kullanıyorum.Oluşturucu başvuru parametresi seg hatayla sonuçlanır
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;
}
Yukarıdaki kodu çalıştırdığımda SIGSEGV'ye yol açar. Ben kod hata ayıklamak için çalıştı ve ben RobotisController yapıcı ulaşmak, nh
gösterir değişkeni, ancak bellek zaten RosWrapper sınıfında ayrılmış olduğunu gösterir.
Vay .. Teşekkürler .. – Lonewolf
Rica ederim @Lonewolf:
Sen beyanı sırasını değiştirebilir. :) – songyuanyao