模板类的构造函数编译时遇到连接错误

我在写自己的的小型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也半天也没找到答案,实在不知道哪错了,望解答!

回答:

没看出什么问题,有可能的话贴出完整代码。
另外确保模板的申明和定义都放在.h头文件中,不要把模板的定义分开放在.cc或.cpp中。

回答:

感觉大家的回答!我的类声明文件里还有一个构造函数
`template <class InputIterator>

    vector(InputIterator first, InputIterator last);`

不过并未写此函数的实现,我把这个声明注释后能编译通过,我猜编译器可能是针对这个函数特化了?

以上是 模板类的构造函数编译时遇到连接错误 的全部内容, 来源链接: utcz.com/p/192932.html

回到顶部