Hi,
I am relatively beginner in C++. I have the following question.
I have two classes, CMotionPlanner which is the base class, and CCollisionObject which is the derived / subclass.
Code:
class CCollisionObject : public CMotionPlanner
{
public:
CCollisionObject() : CMotionPlanner()
{
m_pubObstaclesPub = m_nh.advertise<moveit_msgs::CollisionObject>("/collision_object", 10);
}
void AddObstacle(int choice);
private:
ros::Publisher m_pubObstaclesPub;
moveit_msgs::CollisionObject m_CollisionObject;
shape_msgs::SolidPrimitive primitive;
};
Then, I create an object of the subclass, so that I can invoke class methods. See the code below.
Code:
int main(int argc, char* argv[])
{
ros::init(argc, argv, "ccollisiobobject");
CCollisionObject co;
int selection = atoi(argv[1]);
co.AddObstacle(selection);
ros::shutdown();
return 0;
}
However, I get errors. The program does not compile. The error is the following.
Code:
CMakeFiles/obs_node.dir/src/ccollisionobject.cpp.o: In function `CCollisionObject::CCollisionObject()':
ccollisionobject.cpp:(.text._ZN16CCollisionObjectC2Ev[_ZN16CCollisionObjectC5Ev]+0x24): undefined reference to `CMotionPlanner::CMotionPlanner()'
collect2: error: ld returned 1 exit status
The base class constructor looks like this.
Code:
CMotionPlanner::CMotionPlanner() :
m_strPlanningGroup("manipulator"),
m_MoveGroup(m_strPlanningGroup)
{
m_SamplePose.orientation.w = 0.0;
m_SamplePose.position.x = 0.51;
m_SamplePose.position.y = 0.3;
m_SamplePose.position.z = 0.8;
}
Please, can you help me with this.
thanks,
Zahid