C ++无法实例化抽象类错误

时间:2017-02-19 17:21:37

标签: c++

我是一名回归的大学生,我的代码多年来一直生锈。我们有一个程序,他给了我们一个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

1 个答案:

答案 0 :(得分:0)

当编译器发出此错误时,这意味着您没有在派生类中实现基类的所有纯虚方法(在声明之后使用&#34; = 0&#34;那些)。 / p>

这意味着您的派生类仍然是抽象的,因此无法实例化。

基类中只有两个纯虚方法,你缺少erase()方法。