我正在尝试继承一个抽象类并覆盖其所有纯虚函数
class A
{
virtual bool operator==(const A&) const = 0;
}
class B : A
{
bool operator==(const B& rhs) const override
{ ^^^^^^^^---problem here
// Comparison
}
}
错误:
运算符'bool B :: operator ==(const B&rhs)const'具有'override'说明符,但不覆盖基类成员
答案 0 :(得分:2)
当签名不同时,您不能覆盖virtual
基类函数。在class B
中,它必须是
bool operator==(const A&) const override;
// ^^ must be reference to A
请注意,测试运行时多态类型是否相等总是很奇怪;您将类型抽象出来,然后尝试比较两个实例-但是在派生类型之间应该如何发生?尝试为打算与值语义一起使用的类保留operator==
。