我在 C++ 中有这个类层次结构:
class ISegmentReader
{
public:
virtual void readCacheFromDb() = 0;
//...
};
class ISegmentManager: public ISegmentReader
{
//readCacheFromDb not redeclared
//...
};
class SegmentReader: public ISegmentReader
{
public:
void readCacheFromDb() override final;
};
class SegmentManager: public ISegmentManager, public SegmentReader
{
//readCacheFromDb not redeclared
//...
};
int main()
{
SegmentManager manager;
}
我希望能够在
SegmentReader::readCacheFromDb
中隐式使用 SegmentManager
。然而,每当我尝试编译时,我都会得到:
... invalid new-expression of abstract class type ‘SegmentManager’ ...
because the following virtual functions are pure within ‘SegmentManager’
...
ISegmentReader::readCacheFromDb()’
virtual void readCacheFromDb() = 0;
我可以在不重新声明/重新实现的情况下解决这个问题的任何方法:
SegmentManager::readCacheFromDb(){
SegmentReader::readCacheFromDb();
}
非常感谢
问题似乎出在 ISegmentManager 类的编译中。由于 ISegmentReader 是一个抽象类,因此它需要在 ISegmentManager 中实现纯虚函数。有两种不同的方法可以解决它。