0

我是 C++ 的新手。我收到一个错误“无法解析符号'列表'”我正在处理 eclipse 我无法弄清楚问题是什么......

List.h 这里是父类的声明,它是一个泛型类,Vector 将继承它

#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头文件,继承自List,会实现List的纯虚方法,当我从List继承时报错,Vector的类声明中“无法解析符号'List'”

#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);
};
4

2 回答 2

0

virtual说明符不是重载决议的一部分。您不能使用它们来区分函数签名,因此会出现错误:“不能重载”。

例如:

void add(E o);

virtual void add(E o);

两者都有相同的签名Vector::*(int)。它们不是两个不同的重载。

无论你想做什么,我建议退后一步,先尝试正确理解基本概念。它会给你带来很多痛苦。

于 2012-11-05T14:55:15.043 回答
0

在谷歌上快速搜索无法解析符号“列表”不是编译错误,它是(愚蠢的)日食试图为您重建交叉引用。尝试菜单命令 Index->​​Rebuild。

于 2012-11-05T15:04:57.363 回答