我有一个问题是在从同一个基类继承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';
}
这不编译,我有点明白为什么,但不是真的。但我的实际问题是一个概念问题,即如何处理这样的问题而不是,因为重载不起作用。
答案 0 :(得分:1)
您可以使用类似Boost.Any的内容:
#include <boost/any.hpp>
class Base {
public:
virtual ~Base() {}
boost::any getValue() { return m_value; }
private:
boost::any m_value;
};
// for derived classes, you really do not need a new getValue()