第一个模板类(templet

小弟是刚刚加入c++大队的,对c++中的基本知识只是稍微懂一点。今天在看《c++ primer》中的模板类时,就将其中的程序在vs 2008中写下,新建了Array.h和Array.cpp两个文件。

主函数:
第一个模板类(templet第一个模板类(templetMain.cpp1#include"stdafx.h"

2#include<iostream>

3#include"Array.h"

4

5usingnamespacestd;

6intmain(intargc,char*argv[])

7{

8Array<char>array;

9cout<<array.size()<<endl;

10

11charz;

12cin>>z;

13return0;

14}

15

16

头文件:
第一个模板类(templet第一个模板类(templetArray.h1#pragmaonce

2

3

4template<classelemType>

5classArray

6{

7public:

8

9explicitArray(intsz=DefaultArraySize);

10Array(Array<elemType>*array ,intarray_size);

11Array(constArray&rhs);

12

13~Array(void);

14

15//判断是否相等操作

16booloperator==(constArray&)const;

17booloperator!=(constArray&)const;

18

19//赋值操作符

20Array&operator=(constArray&);

21intsize()const{return_size;};

22

23elemType&operator>

Array头文件的实现:
第一个模板类(templet第一个模板类(templetArray.cpp1#include"StdAfx.h"

2#include"Array.h"

3#include<cassert>

4

5template<classelemType>Array<elemType>::Array(intsz)

6{

7Array<elemType>::Init(sz,0);

8}

9

10

11template<classelemType>Array<elemType>::Array(Array<elemType>array ,intarray_size)

12{

13Array<elemType>::Init(array_size,array);

14}

15

16

17template<classelemType>Array<elemType>::Array(constArray<elemType>&rhs)

18{

19Array<elemType>::Init(rhs.size(),rhs.ia);

20}

21

22template<classelemType>Array<elemType>::~Array(void)

23{

24delete []ia;

25std::cout<<"析构函数作用中。。。。。"<<std::endl;

26}

27template<classelemType>

28voidArray<elemType>::Init(intsz,elemType
array)

29{

30_size=sz;

31ia=newelemType[_size];

32sorted=false;

33

34for(intix=0;ix<_size;++ix)

35{

36if(!array)

37ia[ix]=0;

38else

39ia[ix]=array[ix];

40}

41}

42template<classelemType>

43elemType&Array<elemType>::operator>

但是在编译的时候vs 2008提示“错误 1 error LNK2019: 无法解析的外部符号 "public: __thiscall Array::~Array(void)" (??1?$Array@D@@QAE@XZ),该符号在函数 _main 中被引用 Esonion.obj Esonion" 。

到网上找了好久,才找到原来是vs 2008不支持模板定义和实现分离。将Array.cpp的内容拷贝到Array.h中,在编译就可通过了。我在c-free中试了,也是不可以。看来这两个编译器都不支持模板定义和实现分离。

特意记下来,c++学习路上的一个脚印。

原文链接: https://www.cnblogs.com/mht_two/archive/2010/10/10/1847338.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/15967

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午4:04
下一篇 2023年2月7日 下午4:04

相关推荐