C++ C++;纯虚拟错误

C++ C++;纯虚拟错误,c++,c++11,C++,C++11,我试图从抽象类继承,但出现以下错误: 在/usr/include/c++/5/vector:64:0中包含的文件中, 从/usr/include/boost/format.hpp:17, 来自/usr/include/boost/math/policies/error_handling.hpp:31, 来自/usr/include/boost/math/special_functions/round.hpp:14, from/opt/ros/kinetic/include/ros/time.h:

我试图从抽象类继承,但出现以下错误:

在/usr/include/c++/5/vector:64:0中包含的文件中, 从/usr/include/boost/format.hpp:17, 来自/usr/include/boost/math/policies/error_handling.hpp:31, 来自/usr/include/boost/math/special_functions/round.hpp:14, from/opt/ros/kinetic/include/ros/time.h:58, from/opt/ros/kinetic/include/ros/ros.h:38, from/home/gil/catkin_ws/src/manager/include/Tasks/Task.h:4, from/home/gil/catkin_ws/src/manager/src/Tasks/Task.cpp:1: /usr/include/c++/5/bits/stl_vector.h:713:7:错误:无效摘要 参数类型“管理器::任务” 调整大小(大小\类型\新大小,值\类型\ x=值\类型()

--

/home/gil/catkin_ws/src/manager/include/Tasks/Task.h:11:16:注意:
虚拟空管理器::任务::执行()虚拟空执行()=0; ^在/usr/include/c++/5/vector:64:0中包含的文件中, 从/usr/include/boost/format.hpp:17, 来自/usr/include/boost/math/policies/error_handling.hpp:31, 来自/usr/include/boost/math/special_functions/round.hpp:14, from/opt/ros/kinetic/include/ros/time.h:58, from/opt/ros/kinetic/include/ros/ros.h:38, from/home/gil/catkin_ws/src/manager/include/Tasks/Task.h:4, from/home/gil/catkin_ws/src/manager/include/Tasks/RootTask.h:10, from/home/gil/catkin_ws/src/manager/src/Tasks/RootTask.cpp:8: /usr/include/c++/5/bits/stl_vector.h:713:7:错误:无效摘要 参数类型“管理器::任务” 调整大小(大小\类型\新大小,值\类型\ x=值\类型()

--

manager/CMakeFiles/manager.dir/build.make:110:目标配方 “manager/CMakeFiles/manager.dir/src/Tasks/Task.cpp.o”生成失败[2]: *[manager/CMakeFiles/manager.dir/src/Tasks/Task.cpp.o]错误1生成[2]:*等待未完成的作业。。。。 manager/CMakeFiles/manager.dir/build.make:158:recipe for target “manager/cmakfiles/manager.dir/src/Tasks/RootTask.cpp.o”失败 make[2]:***[manager/CMakeFiles/manager.dir/src/Tasks/RootTask.cpp.o] /usr/include/c++/5/vector:64:0中包含的文件中出现错误1, 从/usr/include/boost/format.hpp:17, 来自/usr/include/boost/math/policies/error_handling.hpp:31, 来自/usr/include/boost/math/special_functions/round.hpp:14, from/opt/ros/kinetic/include/ros/time.h:58, from/opt/ros/kinetic/include/ros/ros.h:38, 来自/home/gil/catkin\u ws/src/manager/src/interior\u mission\u action\u server.cpp:9: /usr/include/c++/5/bits/stl_vector.h:713:7:错误:无效摘要 参数类型“管理器::任务” 调整大小(大小\类型\新大小,值\类型\ x=值\类型()

不知道我错过了什么。。。 以下是我的H和CPP文件:

RootTask.cpp

#include "Tasks/RootTask.h"
namespace manager {
  RootTask::RootTask(std::string name) {
    mTaskName = name;
  }
  RootTask::~RootTask() {}
  RootTask::RootTask() {}

  void RootTask::Execute() {}

  void RootTask::setTaskSeqByName() {}
  std::string RootTask::GetTaskName() {
    return mTaskName;
  }
}
RootTask.h

#include "Tasks/Task.h"
namespace manager {
  class RootTask: public Task {
    public:

      RootTask();
    RootTask(std::string name);~RootTask();

    void Execute();
    void setTaskSeqByName();
    std::string GetTaskName();
  };
}
Task.cpp

#include "Tasks/Task.h"
#include < iostream >

  namespace manager {
    void Task::Stop() {}
    void Task::Pause() {}
    void Task::OnError() {}
    std::string Task::GetTaskName() {}
    void Task::setTaskSeqByName() {}
  }
#包括“Tasks/Task.h”
#包括
命名空间管理器{
无效任务::停止(){}
无效任务::暂停(){}
无效任务::OnError(){}
std::string任务::GetTaskName(){}
void Task::setTaskSeqByName(){}
}
任务.h

#pragma once

#include < iostream > 
#include "ros/ros.h"

namespace manager {
  class Task {
    public:
      virtual void Execute() = 0;
    virtual void setTaskSeqByName();
    virtual void Stop();
    virtual void Pause();
    virtual void OnError();
    virtual std::string GetTaskName();

    protected:
      std::string mTaskName;
    std::vector < Task > mTaskSequence;
  };
}
#pragma一次
#包括
#包括“ros/ros.h”
命名空间管理器{
课堂任务{
公众:
虚空执行()=0;
虚拟void setTaskSeqByName();
虚空停止();
虚空暂停();
虚拟void OnError();
虚拟std::字符串GetTaskName();
受保护的:
std::字符串mTaskName;
std::vectormtask序列;
};
}

感谢您的帮助。

任务中
您有一位会员

std::vector < Task > mTaskSequence;

任务中
有一个成员

std::vector < Task > mTaskSequence;

@NathanOliver的答案指出了如何修复编译器错误

我想指出的是,让
任务
包含指向其他
任务
的指针列表似乎是一个可能的设计缺陷


你可能想把它移到一个更高级的类,它处理的是<代码>任务 S.

< P>。NathanOliver的答案指出了如何修复编译器错误。

我想指出的是,让
任务
包含指向其他
任务
的指针列表似乎是一个可能的设计缺陷


你可能想把它移到一个更高级的类来处理代码<任务> /代码> S.< /P> HMM,我看到你在说什么……想办法解决这个问题……嗯,我明白你的意思了。。。。试图找出一种解决方法。。。