想写一个array-based list 代码如下:
MyList.h
#include <iostream>
template<class Elem> class MyList{
public:
virtual bool append(const Elem&) = 0;
virtual bool insert(const Elem&) = 0;
virtual void print() const = 0;
};
arraybasedlist.h
#include"MyList.h"
template<class Elem>
class AList: public MyList<Elem>//这里错
{
private:
int maxsize;
int fence;
int listSize;
Elem* listArray;
public:
AList(int size = defaultSize)
{
maxSize = size;
listSize = fence = 0;
listArray = new Elem[maxSize];
}
~AList()
{
delete [] listArray;
}
bool insert(const Elem&)
{
if (listSize == maxSize)
return false;
for (int i = listSize; i > fence; i--)
listArray[i] = listArray[i - 1];
listArray[fence] = item;
listSize++;
return true;
}
bool append(const Elem&)
{
if (listSize == maxSize)
return false;
listArray[listSize] = item;
listSize++;
return true;
}
void print() const
{
int temp = 0;
while (temp < fence)
std::cout << listArray[temp++];
std::cout << "|";
while (temp < listSize)
std::cout << listArray[temp++];
std::cout << endl;
}
};
test.cpp
#include"ArrayBasedList.h"
#include"MyList.h"
#include"iostream"
int main()
{
float newA = 20.0;
AList<float> a(10);
for (float i = 0; i < 5; i++)
a.append(i);
a.print();
a.insert(newA);
a.print();
system("pause");
return 0;
}
错误:
1>e:\vsproject\project1\project1\arraybasedlist.h(5): error C2955: “MyList”: 使用 类 模板 需要 模板 参数列表
1>e:\vsproject\project1\project1\mylist.h(23): error C2953: “MyList”: 类模板已经定义
MyList.h
#include <iostream>
template<class Elem> class MyList{
public:
virtual bool append(const Elem&) = 0;
virtual bool insert(const Elem&) = 0;
virtual void print() const = 0;
};
arraybasedlist.h
#include"MyList.h"
template<class Elem>
class AList: public MyList<Elem>//这里错
{
private:
int maxsize;
int fence;
int listSize;
Elem* listArray;
public:
AList(int size = defaultSize)
{
maxSize = size;
listSize = fence = 0;
listArray = new Elem[maxSize];
}
~AList()
{
delete [] listArray;
}
bool insert(const Elem&)
{
if (listSize == maxSize)
return false;
for (int i = listSize; i > fence; i--)
listArray[i] = listArray[i - 1];
listArray[fence] = item;
listSize++;
return true;
}
bool append(const Elem&)
{
if (listSize == maxSize)
return false;
listArray[listSize] = item;
listSize++;
return true;
}
void print() const
{
int temp = 0;
while (temp < fence)
std::cout << listArray[temp++];
std::cout << "|";
while (temp < listSize)
std::cout << listArray[temp++];
std::cout << endl;
}
};
test.cpp
#include"ArrayBasedList.h"
#include"MyList.h"
#include"iostream"
int main()
{
float newA = 20.0;
AList<float> a(10);
for (float i = 0; i < 5; i++)
a.append(i);
a.print();
a.insert(newA);
a.print();
system("pause");
return 0;
}
错误:
1>e:\vsproject\project1\project1\arraybasedlist.h(5): error C2955: “MyList”: 使用 类 模板 需要 模板 参数列表
1>e:\vsproject\project1\project1\mylist.h(23): error C2953: “MyList”: 类模板已经定义
