主题:c++无法解析的外部命令和符合
error LNK2019: 无法解析的外部符号 "public: __thiscall SeqStack<int>::SeqStack<int>(int)" (??0?$SeqStack@H@@QAE@H@Z),该符号在函数 _main 中被引用
fatal error LNK1120: 1 个无法解析的外部命令
代码如下:
#include <iostream>
#include <assert.h>
#include "stack.h"
const int stackIncreament = 20;//栈溢出时扩展空间的增量
template <class T>
class SeqStack:public Stack<T>
{
public:
SeqStack(int sz = 50);//建立一个空栈
~SeqStack(){delete[] elements;}
void Push(const T& x);
bool Pop(T& x);
bool getTop(T &x);
bool IsEmpty() const
{
return (top==-1)?true:false;
}
int getSize() const
{
return top+1;
}
bool IsFull() const
{
return (top==maxSize-1)?true:false;
}
void makeEmpty()
{
top = -1;
}
//friend ostream & operator << (ostream& os,SeqStack<T>& s);
private:
T *elements;
int top;
int maxSize;
void overflowProcess();
};
template <class T>
void SeqStack<T>::overflowProcess() //扩充栈的存储空间
{
T * newArray = new T[maxSize+stackIncreament];
if(newArray = NULL)
{
cerr << "存储分配失败" << endl;
exit(1);
}
for(int i=0;i<=top;i++)
{
newArray[i] = elements[i];
}
maxSize = maxSize + stackIncreament;
delete []elements;
elements = newArray;
}
template <class T>
void SeqStack<T>::Push(const T &x)
{
if(IsFull()==true)
{
overflowProcess();
}
elements[top+1] = x ;
}
template <class T>
bool SeqStack<T>::Pop(T &x)
{
if(IsEmpty()==true)
{
return false;
}
x = elements[top--];
return true;
}
template <class T>
bool SeqStack<T>::getTop(T &x)
{
if(IsEmpty()==true)
{
return false;
}
x = elements[top];
return true;
}
/ 链式栈2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "LinkedStack.h"
#include <iostream>
using namespace std;
int main()
{
int a;
SeqStack<int> ls;
//cout << "输入一个数压栈";
cin >> a;
ls.Push(a);
ls.getSize();
ls.getTop(a);
ls.Pop(a);
return 0;
}/ 链式栈2.cpp : 定义控制台应用程序的入口点。
const int maxSize = 50;
//enum bool{false,true};
template <class T>
class Stack
{
public:
Stack(){};//构造函数
virtual void Push(const T& x) = 0;//压入栈一个元素
virtual bool Pop(T& x) = 0; //弹出一个元素
virtual bool getTop(T &x) = 0;//得到头部
virtual bool IsEmpty() const = 0;//判断是否为空
virtual bool IsFull() const = 0;//判断是否满了
virtual int getSize() const = 0;//计算元素个数
};
请高手指点!!! 我用的是vs2005
fatal error LNK1120: 1 个无法解析的外部命令
代码如下:
#include <iostream>
#include <assert.h>
#include "stack.h"
const int stackIncreament = 20;//栈溢出时扩展空间的增量
template <class T>
class SeqStack:public Stack<T>
{
public:
SeqStack(int sz = 50);//建立一个空栈
~SeqStack(){delete[] elements;}
void Push(const T& x);
bool Pop(T& x);
bool getTop(T &x);
bool IsEmpty() const
{
return (top==-1)?true:false;
}
int getSize() const
{
return top+1;
}
bool IsFull() const
{
return (top==maxSize-1)?true:false;
}
void makeEmpty()
{
top = -1;
}
//friend ostream & operator << (ostream& os,SeqStack<T>& s);
private:
T *elements;
int top;
int maxSize;
void overflowProcess();
};
template <class T>
void SeqStack<T>::overflowProcess() //扩充栈的存储空间
{
T * newArray = new T[maxSize+stackIncreament];
if(newArray = NULL)
{
cerr << "存储分配失败" << endl;
exit(1);
}
for(int i=0;i<=top;i++)
{
newArray[i] = elements[i];
}
maxSize = maxSize + stackIncreament;
delete []elements;
elements = newArray;
}
template <class T>
void SeqStack<T>::Push(const T &x)
{
if(IsFull()==true)
{
overflowProcess();
}
elements[top+1] = x ;
}
template <class T>
bool SeqStack<T>::Pop(T &x)
{
if(IsEmpty()==true)
{
return false;
}
x = elements[top--];
return true;
}
template <class T>
bool SeqStack<T>::getTop(T &x)
{
if(IsEmpty()==true)
{
return false;
}
x = elements[top];
return true;
}
/ 链式栈2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "LinkedStack.h"
#include <iostream>
using namespace std;
int main()
{
int a;
SeqStack<int> ls;
//cout << "输入一个数压栈";
cin >> a;
ls.Push(a);
ls.getSize();
ls.getTop(a);
ls.Pop(a);
return 0;
}/ 链式栈2.cpp : 定义控制台应用程序的入口点。
const int maxSize = 50;
//enum bool{false,true};
template <class T>
class Stack
{
public:
Stack(){};//构造函数
virtual void Push(const T& x) = 0;//压入栈一个元素
virtual bool Pop(T& x) = 0; //弹出一个元素
virtual bool getTop(T &x) = 0;//得到头部
virtual bool IsEmpty() const = 0;//判断是否为空
virtual bool IsFull() const = 0;//判断是否满了
virtual int getSize() const = 0;//计算元素个数
};
请高手指点!!! 我用的是vs2005