【发布时间】:2015-03-23 14:50:28
【问题描述】:
我有一个关于在从同一个基类继承2个不同类的上下文中重载虚函数的问题,它们都需要相同的函数,但是对于不同的数据类型+函数没有参数,所以显然不能重载。
例子:
class Base {
virtual int get_member(){};
virtual char get_member(){};
};
class Derived1: public Base {
int get_member(){return member;}
private:
int member = 0;
};
class Derived2: public Base {
char get_member(){return member;}
private:
char member = 'a';
}
这不编译,我有点明白为什么,但不是真的。但我的实际问题是一个概念性问题,即如何处理这样的问题而不是,因为重载不起作用。
【问题讨论】:
-
你可以随时使用 getIntMember, getStringMember;
-
您必须给它们起不同的名称,或者可能将其设为模板。但是,模板 + 虚拟是棘手的。
-
嗯,好的,谢谢。原以为会有一个优雅的解决方案。
-
你已经表明你知道你不能通过返回类型重载,这是正确的。但是您没有问我们您的真正问题(为什么您认为您需要重载返回类型)所以我们可以帮助解决您真正的问题。
-
嗯,是的,因为这个例子很接近我的真正问题。我有两个继承类,每个类都有一个成员,每个成员的类型不同。该示例只是我真实代码的简化版本,可以这么说。
标签: c++ inheritance overloading virtual