LINUX.ORG.RU

Сообщения looogle

 

Как правильно реализовать конструктор родителя внутри наследника?

Форум — Development

У меня есть 2 класса Node и LifeNode. Node — шаблон класса. Вот их объявление:

node.h

#ifndef NODE_H
#define NODE_H

#include <ros/ros.h>
#include <ros_johnny5/servoMsgArray.h>
#include <ros_johnny5/servoMsg.h>
#include <ros_johnny5/robotState.h>

template <typename PublisherMsgType, typename SubscriberMsgType>
class Node
{
private:
    ros::Publisher mPublisher;
    ros::Subscriber mSubscriber;
public:
    Node(int sizeMessageBuffer,
         char* publisherTopicName,
         char* subscriberTopicName);
    void publish(PublisherMsgType &msg);
    int getNumSubscribers();
protected:
    virtual void pCallbackFunc(const SubscriberMsgType &msg);
    ros::NodeHandle pNodeHandler;
};

#endif // NODE_H

life_node.h

#ifndef JOHNNY_LIFE_H
#define JOHNNY_LIFE_H

#include <ros/ros.h>
#include <ros_johnny5/servoMsgArray.h>
#include <ros_johnny5/servoMsg.h>
#include <ros_johnny5/robotState.h>
#include <node.h>
#include <topics.h>
#include <positions.h>

class LifeNode : public Node<ros_johnny5::servoMsgArray, ros_johnny5::robotState>
{
private:
    u_int8_t mInMotion;
    u_int8_t mGreetingFlag;
    ros::Timer greetingTimer;
public:
    LifeNode();
    void greetingTimerCallback(const ros::TimerEvent& e);
    void callbackFunc(const ros_johnny5::robotState &msg);
    void publish(ros_johnny5::servoMsgArray &msg);
    void timerInit();
    u_int8_t getMotion();
};

#endif // JOHNNY_LIFE_H

Вопрос в следующем: как правильно написать реализацию конструктора наследника? Вот так сделал я:

#include life_node.h

LifeNode::LifeNode():
      Node(SIZE_MESSAGE_BUFFER, TOPIC_SERVO_CONTROL, TOPIC_ROBOT_STATE),
      mInMotion(1),
      mGreetingFlag(0)
{

}

Но получаю ошибку:

/home/dim/Dev/catkin_ws/src/ros_johnny5/src/life_node.cpp:12: ошибка: undefined reference to `Node<ros_johnny5::servoMsgArray_<std::allocator<void> >, ros_johnny5::robotState_<std::allocator<void> > >::Node(int, char*, char*)'

Что я делаю не так?

 , ,

looogle
()

RSS подписка на новые темы