我是C ++的新手,我不太确定如何从基类覆盖方法。对于在发布之前未将代码翻译成英语,我深表歉意,但我认为这不会有任何不同。
我想要做的摘要是为链接列表创建一个抽象基类,然后从中派生单/双/乘链/循环列表等。
这是代码:
#ifndef __LISTA_H__
#define __LISTA_H__
class Elem;
class JulElem;
class Lista // Abstract list class
{
public:
Lista();
~Lista();
virtual void dohvatiGlavu() = 0;
virtual void dodajNaKraj(int vred) = 0;
virtual void dodajIza(Elem* elem, int vr) = 0;
virtual void obrisiIza(Elem* elem) = 0;
virtual bool prazna() = 0;
virtual int velicina() = 0;
protected:
class Elem
{
protected:
int vred;
};
virtual Elem* noviElem();
private:
Elem* glava;
};
class Jul : Lista // Singly linked list
{
public:
void dohvatiGlavu();
void dodajNaKraj(int vred);
void dodajIza(Elem* elem, int vr);
void obrisiIza(Elem* elem);
bool prazna();
int velicina();
private:
class JulElem : Elem
{
};
JulElem* noviElem();
};
这是我得到的错误:
error C2555: 'Jul::noviElem': overriding virtual function return type differs and is not covariant from 'Lista::noviElem'
我经常看到人们在列表元素上使用结构,但是我不确定这是否适合我的案例,因为不同类型的列表需要不同类型的结构。
谢谢
问题在于继承是私有的,因此JulElem*
与不协变Elem*
。使用公共继承:
class JulElem : public Elem
^^^^^^
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句