微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 C++ 中实现策略模式的错误

如何解决在 C++ 中实现策略模式的错误

我正在尝试用 C++ 实现设计模式策略。 我的目标是对 2 个数字进行运算。

这是我的上下文类

  operation::operation(std::unique_ptr<calculatorTask> pTask = nullptr)
{
    pCalculatorTask = std::move(pTask);
}

operation::~operation();
{
}

void operation::setTask(std::unique_ptr<calculatorTask> pTask)
{
    this->pCalculatorTask = std::move(pTask);
}

void operation::executeTask(numberMsg& sValues)
{
    pCalculatorTask->calculate(values);
}

这是我的实现:

int main()
{
   std::vector<std::unique_ptr<calculatorTask>> myOperation;
   myOperation.push_back(std::move(std::unique_ptr<additionTask>(new additionTask())));
   myOperation.push_back(std::move(std::unique_ptr<substractionTask>(new substractionTask())));
   for (const auto &Ope : myOperation)
    {
        pOpe->setTask(Ope);
        [...]
    }
}

我有这个错误

错误:使用已删除函数‘std::unique_ptr<_tp _dp>::unique_ptr(const std::unique_ptr<_tp _dp>&) [with _Tp =calculatorTask; _Dp = std::default_delete]' pOpe->setTask(Ope);

我不明白错误以及如何修复它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。