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 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀