我正在继承一个具有void* A::data()
方法的类A。在子类B中,我有一个ctor,它带有一个const void*
,我想通过重写的const void* B::data() const
方法返回它。
我本来可以做到(在B的声明中):
void *data() = delete
const void *data() const { return m_data; }
,这将使覆盖的data()
方法成为唯一可用的方法。取而代之的是,即使没有使左值不能为const的东西(例如打印返回值),GCC和clang似乎都认为我尝试使用已删除的方法。
还有另一种方法可以实现这一目标,但不能归结为在B中使用诸如hack的方法来覆盖void* A::data()
void *data()
{
void** pp = const_cast<void**>(&m_data);
return *pp;
}