如何解决LNK2019 将函数放在头文件之外时出错
每当我尝试将函数定义移到头文件之外时,就会遇到 LNK2019 错误。当我在头文件中有重载的运算符和 push_back() 函数时,它工作正常,但当我将它移到实现文件时却没有。这是我的头文件:
#ifndef VECTOR_H
#define VECTOR_H
#include <iostream>
using namespace std;
template <typename T>
class Vector
{
int capacity;
int size;
T* arr;
public:
Vector();
Vector(int initial_capacity) {
arr = new T[initial_capacity];
capacity = initial_capacity;
int size = 0;
}
Vector(const Vector& source) {
arr = new T[source.capacity];
capacity = source.capacity;
size = source.size;
copy(source.arr,source.arr + size,arr);
}
~Vector() {
delete[] arr;
}
void push_back(T);
template<typename T> friend ostream& operator<< (ostream&,Vector<T>&);
};
#endif
这是我的实现文件:
#include "Vector.h"
#include <iostream>
template<typename T>
ostream& operator <<(ostream& outs,Vector<T>& source) {
for (int i = 0; i < source.size; ++i) {
outs << source.arr[i] << " ";
}
return outs;
}
template<typename T>
void Vector<T>::push_back(T val) {
arr[size] = val;
size += 1;
}
这是我的主文件:
#include "Vector.h"
#include <iostream>
using namespace std;
int main() {
Vector<int> sample(10);
sample.push_back(10);
sample.push_back(20);
cout << sample;
return 1;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。