【发布时间】:2017-03-13 20:50:39
【问题描述】:
我试图覆盖子类中的虚拟比较运算符,但我收到一个编译器错误,指出派生类没有实现基类的虚拟运算符。
我感觉这与我的派生运算符不使用基类的参数类型有关。
简化版如下:
struct Base {
virtual bool operator ==(const Base) const;
};
struct Derived : Base {
bool operator ==(const Derived) const {
// implementation goes here
}
};
我有办法做到这一点,还是我必须在 Derived 实现中进行类型检查以查看它是否是正确的类型?
【问题讨论】:
-
虚拟比较为您提供运行时类型检查,您想要吗?
-
@Cheersandhth.-Alf 我想我会,我会有一个充满不同派生类的向量,所以在不知道哪个是哪个的情况下,我想让操作员处理两个类具有相同的派生类型
-
投票结束,因为缺乏可重复的例子
-
@Cheersandhth.-Alf 我不确定我给出的例子是不够的。它准确地说明了我想要做什么
-
如果您将引用作为参数传递?
标签: c++ inheritance operator-overloading overriding subtyping