类模板成员函数要不就在类模板中实现,要不就和类模板写在同一个文件中。

否则然会出现下面错误:

>main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall vec<int>::pop_back(void)" (?pop_back@?$vec@H@@QAEHXZ),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall vec<int>::push_back(int)" (?push_back@?$vec@H@@QAEXH@Z),该符号在函数 _main 中被引用

示例如下:

main.cpp

#include <iostream>
#include "vec.h"
using namespace std; int main()
{
vec<int> s;
s.push_back();
s.push_back();
s.push_back();
s.push_back();
s.push_back(); try
{
while ()
cout<<s.pop_back()<<endl;
}
catch (const runtime_error &e)
{
cerr<<e.what()<<endl;
} system("pause");
}

vec.h

#pragma once
template<class T>
class vec
{
public: vec()
:vect(new T[capacity]),
capacity(),
size(){};
~vec()
{
delete[] vect;
} int capacity;
int size;
T *vect; void push_back(T t);
T pop_back(); }; template<class T>
void vec<T>::push_back(T t)
{
if(size==capacity)
{
capacity=capacity*;
T *tmp_vec=new T[capacity];
for(int i=;i<size;i++) //我想这里一个个复制并不理想,做个数据结构,用指针连接也许更好
tmp_vec[i]=vect[i]; //不过用指针连接,速度上去了,运行空间也变大了
delete[] vect;
vect=tmp_vec;
}
vect[size]=t;
size++;
} template<class T>
T vec<T>::pop_back()
{
if(size==)
throw std::runtime_error("vect is empty");
else
{
size--;
return vect[size];
}
}

最新文章

  1. apache+php 安装
  2. Docker-3:Data Volume
  3. C#中方法的参数的四种类型
  4. NYOJ:题目529 flip
  5. 【分享】4款WiFi广告营销利器推荐
  6. Linux磁盘分区与格式化
  7. Ruby Class
  8. [改善Java代码]不要只替换一个类
  9. Volley 百财帮封装
  10. paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制
  11. mahout源码KMeansDriver分析之五CIMapper
  12. [转]于Fragment和Activity之间onCreateOptionsMenu的问题
  13. sharepreference使用教程
  14. Image Style Transfer:多风格 TensorFlow 实现
  15. Rails Migration Data Model栏位修改及数据类型介绍
  16. WPF 窗口居中 &amp; 变更触发机制
  17. lemon special judge模板
  18. 解析/proc/net/dev
  19. Mysql 和 SQLServer 使用SQL差异比较
  20. 尚硅谷springboot学习26-嵌入式servlet容器自动配置、启动原理

热门文章

  1. mysql 命令连接
  2. CF914E Palindromes in a Tree(点分治)
  3. Oj 24260: Lilypad Pond (神奇广搜题,状态搜索)
  4. Hash 日常摸鱼笔记
  5. i2c设备驱动之设备地址
  6. setlocal enabledelayedexpansion 解释
  7. Notepad++中F3直接搜索选中文字
  8. C++ GUI Qt4编程(05)-2.2GoToCell
  9. 使用dd命令写iso文件到u盘
  10. linux的运行模式