「已注销」 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 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化