C++ 重写方法会生成一个声明该方法的错误';即使签名与参数相同,也不会重写

C++ 重写方法会生成一个声明该方法的错误';即使签名与参数相同,也不会重写,c++,overriding,abstract-class,C++,Overriding,Abstract Class,我遇到一条错误消息,该消息说:纯虚拟函数:IOObject::toString没有重写器 我在它上面看到过多个线程,问题是人们没有相同的带有参数的签名,因此从来没有真正“覆盖”过它,而是重载了它。但在这个例子中,我有相同的签名和参数(无),但它仍然表示相同的错误 这里是抽象类ioobject.h #pragma一次 #ifndef I_OBJECT_H #定义I_对象 #包括 类对象 { 公众: 虚拟std::string toString()const=0; }; #endif/!我反对 t

我遇到一条错误消息,该消息说:纯虚拟函数:IOObject::toString没有重写器

我在它上面看到过多个线程,问题是人们没有相同的带有参数的签名,因此从来没有真正“覆盖”过它,而是重载了它。但在这个例子中,我有相同的签名和参数(无),但它仍然表示相同的错误

这里是抽象类ioobject.h

#pragma一次
#ifndef I_OBJECT_H
#定义I_对象
#包括
类对象
{
公众:
虚拟std::string toString()const=0;
};
#endif/!我反对
toString()
方法是纯虚拟的,需要重写

这是i可比较的,是IObject.h的后代

#pragma一次
#如果没有可比性
#定义可比较的
#包括“IObject.h”
类别I可比较:
公共对象
{
公众:
虚拟整数比较(IComparable*obj)常量=0;
};
#endif/!我
这里我有一个Time.h,它覆盖了
compareTo(IComparable*obj)
fromIComparable.h和
toString()
fromioobject.h

#pragma一次
#ifndef时间
#定义时间
#包括“IComparable.h”
结构时间:公共IComparable{
公众:
时间(小时、分钟、秒);
虚拟整数比较(IComparable*obj)常量覆盖;

virtual std::string toString()const override;//
IComparable
是一个抽象类。您无法在
新建IComparable[ARRAY\u SIZE]
中创建其类型的对象。似乎将其用作接口类。为什么要创建其类型的对象?您是想编写
新时间[ARRAY\u SIZE]
相反?@mark哦,你说得对,我完全错过了那部分,谢谢!