绕过无参数函数的方法是不可能的

时间:2015-03-23 14:50:29

标签: c++ inheritance overloading virtual

我有一个问题是在从同一个基类继承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';
}

这不编译,我有点明白为什么,但不是真的。但我的实际问题是一个概念问题,即如何处理这样的问题而不是,因为重载不起作用。

1 个答案:

答案 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()