我是一名回归的大学生,我的代码多年来一直生锈。我们有一个程序,他给了我们一个UML模板。无论如何我得到一个c2259错误,无法实例化抽象类,当我编译时,我找不到问题。有任何想法吗?
<link rel="stylesheet" type="text/css" href='static/bootstrap.css'>
ListType.h
#ifndef OLISTTYPE_H
#define OLISTTYPE_H
#include "ListType.h"
template <class T>
class OListType: public ListType<T> {
public:
bool insert(const T&);
void insertFirst(const T&);
void insertLast(const T&);
bool find(const T&) const;
};
template <class T>
bool OListType<T>::find(const T& item) const {
NodeType<T>* temp = this->head;
while (temp != NULL && temp->info < item) {
temp = temp->link;
}
return(temp != NULL && temp->info == item);
}
template <class T>
bool OListType<T>::insert(const T& newItem) {
NodeType<T> *current;
NodeType<T> *trailCurrent;
NodeType<T> *newNode;
bool found;
newNode = new NodeType<T>;
newNode->info = newItem;
newNode->link = nullptr;
if (first == nullptr) {
first = newNode;
last = newNode;
count++;
}
else {
current = first;
found = false;
while (current != nullptr && !found)
if (current->info >= newItem)
found = true;
else {
trailCurrent = current;
current = current->link;
}
if (current == first) {
newNode->link = first;
first = newNode;
count++;
}
else {
trailCurrent->link = newNode;
newNode->link = current;
if (current == nullptr)
last = newNode;
count++;
}
}
}
template<class T>
void OListType<T>::insertFirst(const T& newItem) {
insert(newItem);
}
template<class T>
void OListType<T>::insertLast(const T& newItem) {
insert(newItem);
}
#endif
答案 0 :(得分:0)
当编译器发出此错误时,这意味着您没有在派生类中实现基类的所有纯虚方法(在声明之后使用&#34; = 0&#34;那些)。 / p>
这意味着您的派生类仍然是抽象的,因此无法实例化。
基类中只有两个纯虚方法,你缺少erase()方法。