我收到了以下错误信息:
在这段代码上:
error: cannot declare variable 'b' to be of abstract type 'B'
note: because the following virtual functions are pure within 'B'
note: virtual bool Serializable::eq(const QString&) const
virtual bool eq( const QString & qs) const = 0;
^
note: virtual bool Serializable::eq(const Serializable*) const
virtual bool eq( const Serializable * o) const = 0;
^
在这段代码上:
class Serializable {
public:
virtual bool eq( const QString & qs) const = 0;
virtual bool eq( const Serializable * o) const = 0;
};
class JSONSerializable : public Serializable {
public:
virtual QString toJSON( void) const = 0;
virtual bool eq( const QString & qs) const {
return toJSON() == qs;
}
virtual bool eq( const Serializable * o) const {
return eq( (( JSONSerializable *) o)->toJSON());
}
};
class A : public Serializable { };
class B : public A,
public JSONSerializable {
public:
virtual QString toJSON( void) const {
return QString( "test!");
}
};
…
B b;
qDebug() << b.toJSON();
…
我理解这是因为纯虚方法或多重继承的原因。这个错误真的让我很难过,我应该如何解决?非常感谢你的帮助!