不允许抽象类类型的对象 "Vector<LinkedList<int>>"
object of abstract class type "Vector<LinkedList<int>>" is not allowed
template <class Type>
class AbstractVector : virtual public AbstractArrayClass<Type> {
public:
virtual void insert(const Type& item, int index) = 0;
virtual void remove(int index) = 0;
virtual void add(const Type& item);
};
template <class Type>
class Vector : virtual public ArrayClass<Type>,
virtual public AbstractVector<Type>
{
protected:
int _currSize;
int _incFactor;
public:
Vector();
Vector(int n);
Vector(int n, Type& val);
Vector(const Vector<Type>& v);
Vector(const ArrayClass<Type>& ac);
virtual ~Vector();
void operator= (const Vector<Type>& v);
void operator= (const ArrayClass<Type>& ac);
virtual void insert(Type& item, int index);
virtual void remove(int index);
virtual int size() const;
virtual int capacity() const;
virtual int incFactor(int f);
void setIncFactor(int f);
void setCapacity(int c);
};
template <class Type>
class LinkedList {
protected:
Type* _info;
LinkedList<Type>* _next;
public:
LinkedList<Type>();
LinkedList<Type>(Type& val);
LinkedList<Type>(int l, Type& val);
LinkedList<Type>(LinkedList<Type>& list);
void add(Type& val);
void insert(Type& val, int k);
void remove();
void removeAt(int k);
~LinkedList();
int size();
Type& operator[] (int k);
LinkedList<Type>& operator= (LinkedList<Type>& list);
};
template <class Type>
void Vector<Type>::insert(Type& item, int index) {
if ((index < 0) || (index > _currSize)) {
throw ArrayBoundsException();
};
// if new size is equal to maximum capacity increase it
if (_currSize + 1 == _size) {
setCapacity(_size + _incFactor);
};
// increment current size
_currSize++;
// copy all data
for (int i = _currSize - 1; i > index; i--) {
(*this)[i] = (*this)[i - 1];
};
// insert new item
(*this)[index] = (Type)item;
}
来自 AbstractVector 类的插入函数是完全定义的,Vector 类的代码是由我们在课程中使用的教科书提供的,但我从每个接受过它的人那里听说提供的代码很糟糕。
当我尝试创建矢量时,
Vector<LinkedList<int>> v;
它抛出"acstract类类型"Vector>的对象"是不允许的:纯虚函数"AbstractVector::insert[with Type=LinkedList]"没有覆盖器"和C2259:"'Vector>':不能实例化抽象类。
我试图查看其他问题,但解决方案似乎主要表明该函数未在任何地方定义,事实并非如此。
看看你的insert
声明和AbstractVector
的声明之间的区别:
你:
virtual void insert(Type& item, int index);
AbstractVector
:
virtual void insert(const Type& item, int index) = 0;
请注意,您的缺少const
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中