用模板类中的C 继承错误

Inheriting in c++ with template classes error

本文关键字:继承 错误      更新时间:2023-10-16

我是新手C 。我收到错误的"符号'列表"无法解决"我正在尝试日食,我无法弄清楚问题是什么...

list.h这是父亲班的声明,这是一个通用类,将继承

#ifndef LIST_H_
#define LIST_H_
template <class E> class List {
protected:
    int size;
public:
    virtual ~List();
    virtual void add(E o) = 0;
    virtual E get(int index) = 0;
    int getSize();
};
template <class E> List<E>::~List() {
}
template <class E> int List<E>::getSize() {
    return size;
}
#endif /* LIST_H_ */

vector.h vector标头文件,该文件从列表继承,它将实现列表的纯虚拟方法我会收到错误,当我从列表继承时,在向量的类声明中,"符号'列表"无法解决"

#include "List.h"
template <class E> class Vector: public List<E>{
private:
    class Node {
    public:
        E value;
        Node* next;
        Node(E value): value(value), next(0) {}
    };
    typedef Node* PNode;
    PNode first;
public:
    Vector();
    virtual ~Vector();
    void add(E o);
    E get(int index);
    virtual void add(E o);
    virtual E get(int index);
};

在Google yelds上快速搜索符号'列表'无法解决不是汇编错误,而是(愚蠢的)Eclipse试图重建交叉引用为你。尝试菜单命令索引 ->重建。

virtual指示符不是超载分辨率的一部分。您不能使用它们来区分函数签名,因此错误:"不能超载"。

例如:

void add(E o);

virtual void add(E o);

都具有相同的签名Vector::*(int)。他们不是两个不同的过载。

无论您想做什么,我建议退后一步,尝试首先获得基本概念。这将使您感到痛苦。