8
ROSアプリケーションで次のコードを使用しています。コンストラクタ参照パラメータの結果がsegである
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;
}
上記のコードを実行すると、SIGSEGVが発生します。コードをデバッグしようとしましたが、RobotisControllerのコンストラクタに到達すると、コンストラクタnh
に渡される変数はcannot access memory
と表示されますが、メモリはすでにクラスRosWrapperに割り当てられています。
うわー..おかげで.. – Lonewolf
どういたしまして@Lonewolf:
あなたは宣言の順序を変更する場合があります。 :) – songyuanyao