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

否则然会出现下面错误:

>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];
}
}

c++类模板成员函数报错的更多相关文章

  1. C++ - 模板类模板成员函数(member function template)隐式处理(implicit)变化

    模板类模板成员函数(member function template)隐式处理(implicit)变化 本文地址: http://blog.csdn.net/caroline_wendy/articl ...

  2. 类模板成员函数默认值问题:an out-of-line definition of a member of a class template cannot have default arguments

    template <typename T> class A { ); }; template<typename T> ) { /* */ } 对于类似上文代码,VS编译器会报 ...

  3. c++函数模板作为类的成员函数,编译报错LNK2019的解决方法

    为了使某个类的成员函数能对不同的参数进行相同的处理,需要用到函数模板,即template<typename T> void Function(). 编译时报错LNK2019 解决方法: 1 ...

  4. C++ 11 线程调用类的成员函数解决办法

    在C++中,_beginthreadex 创建线程是很麻烦的.要求入口函数必须是类的静态函数. 通常,可以采用thunk,或者模板来实现. 因C++ 11中引入了 std::async ,可以很好的解 ...

  5. C++ socket bind()函数报错 不存在从 "std::_Binder<std::_Unforced, SOCKET &, sockaddr *&, size_t &>" 到 "int" 的适当转换函数

    昨天还可以正常运行的程序,怎么今天改了程序的结构就报错了呢?我明明没有改动函数内部啊!!! 内心无数只“草泥马”在奔腾,这可咋办呢?于是乎,小寅开始求助于亲爱的度娘...... 由于小寅知识水平有限, ...

  6. [转载]能不能同时用static和const修饰类的成员函数?

    题目(一):我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量).请问:能不能同时用static和con ...

  7. (转)c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考

    昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout<<"printA"< ...

  8. C++类的成员函数使用的一些小总结

    From: http://blog.csdn.net/xiayefanxing/article/details/7607506 这一阵做项目代码开发的时候,用到了在一个C++文件中使用另一个类的成员函 ...

  9. linux下启动dbca或netmgr类的图形界面报错解决

    linux下启动dbca或netmgr类的图形界面报错解决    Xlib: connection to ":0.0" refused by server Xlib: No pro ...

随机推荐

  1. JDK原生的HttpURLConnection请求实例

    不想说啥,上代码! package com.my.https; import java.io.BufferedReader; import java.io.IOException; import ja ...

  2. python学习,day1:循环判断基本语句的几个代码

    # coding=utf-8 # Author: RyAn Bi count = 0 '''while True : print('count:',count) count = count + 1 i ...

  3. dcoker machine

    Docker Machine是一个安装和管理 Docker 的工具, 它有自己的命令行工具:docker-machine.Docker Machine简化了Docker的安装和远程管理, 不仅可以管理 ...

  4. 【网络】访问控制列表(ACL)

    目的:172.16.12.1可以telnet到172.16.12.254,但是无法ping通172.16.12.254 Router0配置: 配置enable密码(必须,否则无法进入特权模式): r1 ...

  5. mysql允许数据库远程连接

    2018-11-06 进入数据库 mysql -uroou(用户) -p123456(密码) 授权某个user可远程访问 grant all privileges on *.* to ' with g ...

  6. 让android系统中任意一个view变成进度条

    1.效果 2.进度条背景drawable文件 结束后可以恢复原背景. <?xml version="1.0" encoding="utf-8"?> ...

  7. 破解myBase试用到期

    请保持你的myBase7是关闭的 1.找到myBase7的安装目录(myBase.exe的目录): 2.右键编辑打开myBase.ini: 3.找到 App.UserLic.FirstUseOn,并在 ...

  8. 《The Python Standard Library》——http模块阅读笔记2

    http.server是用来构建HTTP服务器(web服务器)的模块,定义了许多相关的类. 创建及运行服务器的代码一般为: def run(server_class=HTTPServer, handl ...

  9. CentOS6 克 隆

    原始机子关机 自己设置名字 保存地址 开机 配置hosts   后面的为你要设置的名字不配置可能xshell链接上不了网 更改名字: 配置网卡 删除物理地址 mac 和  uuid 删除网卡 重启

  10. IDEA 中tomcat启动问题时,一直出去发布状态,无法加载项目

    解决方法:排查clean.build之前添加的xml中的sql语句,发现sql多写了一个逗号,导致无法加载项目.修改完sql,就可以跑了.