c++ - 为什么在我的 C++ 代码中出现未定义的错误引用?
问题描述
<segment_tree.hpp>
#include<vector>
#include<functional>
namespace dodam{
template<typename T> using Operator_type = std::function<T(T, T)>;
template<typename T=int>
class SegmentTree{
public:
explicit SegmentTree() = delete;
explicit SegmentTree(const size_t& size, const Operator_type<T>& op);
explicit SegmentTree(const size_t& size, Operator_type<T>&& op = std::plus<T>{});
explicit SegmentTree(const SegmentTree<T>& obj);
explicit SegmentTree(SegmentTree<T>&& obj);
~SegmentTree();
SegmentTree& operator=(const SegmentTree<T>& obj);
SegmentTree& operator=(SegmentTree<T>&& obj);
private:
std::vector<T> tree;
size_t size;
Operator_type<T> op;
};
};
<segment_tree.cpp>
#include"segment_tree.hpp"
#include<vector>
#include<functional>
#include<algorithm>
#include<memory>
using namespace dodam;
template<typename T>
SegmentTree<T>::SegmentTree(const size_t& size, Operator_type<T>&& op):tree(std::vector<T>(4*size+1)),size(size), op(std::move<Operator_type<T>>(op)){}
template<typename T>
SegmentTree<T>::SegmentTree(const size_t& size, const Operator_type<T>& op):tree(std::vector<T>(4*size+1)), size(size), op(op){}
template<typename T>
SegmentTree<T>::SegmentTree(const SegmentTree<T>& obj):tree(obj.tree),size(obj.size),op(obj.op){}
template<typename T>
SegmentTree<T>::SegmentTree(SegmentTree<T>&& obj):tree(std::move(obj.tree)),size(obj.size),op(std::move(obj.op)){}
template<typename T>
SegmentTree<T>::~SegmentTree()=default;
template<typename T>
SegmentTree<T>& SegmentTree<T>::operator=(const SegmentTree<T>& obj){
tree = obj.tree;
size = obj.size;
op = obj.op;
return *this;
}
template<typename T>
SegmentTree<T>& SegmentTree<T>::operator=(SegmentTree<T>&& obj){
tree = std::move(obj.tree);
size = obj.size;
op = std::move(obj.op);
return *this;
}
我想我在 cpp 中正确地编写了所有方法。
但是,试图做出结果,我收到了这个错误信息。
我不知道为什么会这样。
我想念什么?
有人帮我吗?
编译器:Clang++12
解决方案
推荐阅读
- ruby - Selenium Web 驱动程序中的 Puppeteer slowMo 选项?
- gwt - 指定单个类的 GWT 模块 xml 源元素
- tensorflow - 如何使用 tf.concat() 函数?
- if-statement - 使用 2 个条件输出,第二个条件将使用 2 个不同公式之一
- javascript - 删除由 v-if 条件生成的评论标记
- c# - How to add a user to app in portal.azure's enterprise applications?
- sql - 正则表达式用单个不工作替换多个模式
- php - 如何使用 Htaccess PHP 中的 Mod 重写规则解决 Urls 中类似的参数组合数量
- sql-server - 将tomcat应用程序从redhat连接到sql server时出错
- php - 在不记录 IP 的情况下停止滥用投票系统?