fsbqsl 2016-09-18 13:17 采纳率: 100%
浏览 1307
已采纳

请问这个类模板出了什么问题?

#ifndef Seqlist_H
#define Seqlist_H

const size_t maxsize = 10 ;

template
class seqlist
{
private:
datatype data [ maxsize ] ;
int length ;
public:
seqlist(){ length = 0 ; } ;

seqlist( datatype a[] , int size ) ;

~seqlist(){} ;

int set_length (){ return length ; } ;

datatype get( int i ) ;

int locate( datatype x ) ;

void insert ( int i , datatype x ) ;

datatype delete_element( int i ) ;

void printlist() ;

};

#endif
#include "SeqList.h"

template
seqlist :: seqlist ( datatype a[] ,int n )
{
if ( n > maxsize )
throw "参数非法" ;
for ( size_t i = 0 ; i < n ; i ++ )
{
data[i] = a[i] ;
}
length = n ;
}

template
datatype seqlist :: get ( int i )
{
if ( i < 1 || i > length )
throw "查找的位置非法" ;

 else 
     return data[i-1] ;

}

template
int seqlist ::locate( datatype x )
{
for ( size_t i = 0 ; i < length ; i ++ )
{
if ( data[i] == x )
return i-1 ;

}
return 0 ;
}

template
void seqlist::insert( int i , datatype x )
{
if ( length > maxsize )
throw "上溢" ;
if ( i < 1 || i > length )
throw "插入的位置非法" ;
for ( size_t j = length ; j > i ; j-- )
{
data[j] = data[j-1] ;
}
data[i-1] = x ;
length ++ ;
}

template
datatype seqlist :: delete_element( int i )
{
if ( length == 0 )
throw "下溢" ;

 if ( i < o || i > length )
   throw "位置非法" ;

 x = data[i-1] ;
 for ( size_t j = i ; j < length ; j++ )
     data[j-1] = data[j] ;
 length -- ;
 return x ;

}

template
void seqlist :: printlist()
{
for ( size_t i = 0 ; i < length ; i ++ )
std::cout << data[i] << " " ;
}
#include
#include "SeqList.h"

void main()
{
int Array_text [maxsize] ;

std::cout << "请输入 10 个数字 :" << std::endl ;
for ( size_t i = 0 ; i < maxsize ; i ++ )
    std::cin >> Array_text [maxsize] ;

seqlist <int> text1( Array_text , maxsize ) ; 
text1.printlist() ;    // 代码现在此处加了断点调试,不晓得为什么会出现以下错误

}

错误提示:
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall seqlist::seqlist(int * const,int)" (??0?$seqlist@H@@QAE@QAHH@Z),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall seqlist::printlist(void)" (?printlist@?$seqlist@H@@QAEXXZ),该符号在函数 _main 中被引用
1>F:\C++初始\seqlist_use\Debug\seqlist_use.exe : fatal error LNK1120: 2 个无法解析的外部命令

怎么回事,求大神告知!!!
感激不尽!!!

  • 写回答

2条回答 默认 最新

  • 小灸舞 2016-09-19 06:52
    关注

    模板类的实现,脱离具体的使用,是无法单独的编译的;把声明和实现分开的做法也是不可取的,必须把实现全部写在头文件里面。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器