【发布时间】:2018-04-27 19:54:46
【问题描述】:
问题是:ExampleIt 从类It 继承(并覆盖方法),所以当我在类Wrapped 中重载运算符时(它从It 调用一些方法,应该被@ 覆盖987654325@.
想要的效果是,当我重载operator* 时,我应该能够调用*name_of_Wrapped_class,这应该执行虚拟方法dereference(来自It),它应该被ExampleIt 覆盖。
class It {
public:
virtual std::pair<int, std::string> dereference() const;
};
class ExampleIt : It {
public:
std::pair<int, std::string> dereference() const override;
};
class Wrapped : It{ //??? not sure about that
public:
std::pair<int, std::string> operator*() const; // it should call for dereference()
};
【问题讨论】:
-
您的对象是否来自
Wrapped和ExampleIt?否则,我不确定你在问什么。也许您的意思是让Wrapped继承自ExampleIt? -
你的意思是
Wrapped应该持有一个指向It的指针或引用,它可以引用从It派生的任何类。? -
只是想创建一个调用虚函数的 shim 辅助函数吗?你可以在你的接口基类中声明这样的函数。
-
Wrapped和ExampleIt之间没有关系(除了它们碰巧都派生自It)。任何一个的成员函数都不是另一个的成员函数。
标签: c++ c++11 operator-overloading virtual-functions