模板类的构造函数编译时遇到连接错误
我在写自己的的小型STL模板库,在写vector的构造函数时遇到连接问题
函数声明与实现如下
template <class T, class Alloc = allocator<T>>
class vector {
public:
typedef T value_type;
typedef T* iterator;
typedef T& reference;
typedef iterator pointer;
typedef size_t size_type;
typedef ptrdiff_t difference_type;
private:
iterator start;
iterator finish;
iterator end_of_storage;
typedef Alloc date_allocator;
public: //构造析构相关
vector() :start(0), finish(0), end_of_storage(0) {}
explicit vector(const size_type n);
vector(const size_type n, const T& value);
..............
两个构造函数实现如下
template <class T, class Alloc>
vector<T, Alloc>::vector(const size_type n) {
allocate_and_fill(n, value_type());
}
template <class T, class Alloc>
vector<T, Alloc>::vector(const size_type n, const T& value) {
allocate_and_fill(n, value);
}
单元测试代码如下
void test_case1() {
myVec<int> v1(10);
//myVec<int> v2(10, 8);
assert(v1.size() == 10);
mySTL::test::container_print(v1);
}
第二个构造函数编译时遇到如下错误
当把第二个构造函数注释后能编译通过并且正常运行
编程新手,google也半天也没找到答案,实在不知道哪错了,望解答!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没看出什么问题,有可能的话贴出完整代码。
另外确保模板的申明和定义都放在.h头文件中,不要把模板的定义分开放在.cc或.cpp中。
感觉大家的回答!我的类声明文件里还有一个构造函数
`template <class InputIterator>
不过并未写此函数的实现,我把这个声明注释后能编译通过,我猜编译器可能是针对这个函数特化了?