Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

rosActionlib class内でメンバとして利用したときにエラー

解決したいこと

classのメンバー変数としてActionLibのserverを利用しようとすると、Serverのコンストラクタが正しく読み込まれていないのか引数が認識されませんでした。

どなたか教えていただけると助かります。

発生している問題・エラー

class robotPursuit
{
    protected:
        typedef actionlib::SimpleActionServer<purepursuit_test::pursuitAction> Server;
    public:
        M_Info info;
        SteeringMovement movement;
        PurePursuit myPurePursuit;
        PID myPID;

        ros::Timer timer;
        ros::NodeHandle nh;
        Vector2_t moter_info;
        ros::Publisher move_pub = nh.advertise<std_msgs::Float32MultiArray>("MachineCommand", 10);
        ros::Publisher goal_pub = nh.advertise<std_msgs::Float32MultiArray>("gorl_pos", 10);
        Server server( nh, "robot_test", false);

        void timer_callback(const ros::TimerEvent& e);

発生している問題・エラー

image.png

image.png

0

1Answer

非静的メンバ変数の初期化子としては、=演算子によるコンストラクタ呼び出し、および{ }波カッコ構文によるコンストラクタ呼び出しのみを許可する。( )丸カッコ構文によるコンストラクタ呼び出しは、メンバ関数の宣言と曖昧になるために許可しない

この仕様にあっていないため関数定義として解釈されている気がします。

1Like

Comments

  1. 返信遅くなってしまい申し訳ありません。ligunさんの言うとおりメンバ変数内の()を用いた初期化ではできなかったのでコンストラクタの初期化子リストにて初期化することで解決できました。ご回答ありがとうございました。

Your answer might help someone💌