C++ 绕过无法重载无参数函数的方法

C++ 绕过无法重载无参数函数的方法,c++,inheritance,overloading,virtual,C++,Inheritance,Overloading,Virtual,我有一个关于在从同一基类继承两个不同类的上下文中重载虚拟函数的问题,这两个类都需要相同的函数,但是对于不同的数据类型+函数没有参数,因此显然不能重载 例如: class Base { virtual int get_member(){}; virtual char get_member(){}; }; class Derived1: public Base { int get_member(){return member;} private:

我有一个关于在从同一基类继承两个不同类的上下文中重载虚拟函数的问题,这两个类都需要相同的函数,但是对于不同的数据类型+函数没有参数,因此显然不能重载

例如:

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';
}

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

您可以使用以下方法:

#包括
阶级基础{
公众:
虚拟~Base(){}
boost::any getValue(){return m_value;}
私人:
boost::任意m_值;
};
//对于派生类,实际上不需要新的getValue()

您可以始终使用getIntMember、getStringMember;你必须给他们起不同的名字,或者把它做成一个模板。然而,模板+虚拟是棘手的。嗯,好的,谢谢。我认为会有一个优雅的解决方案。您已经表明,您知道不能通过返回类型重载,这是正确的。但是你没有问我们你真正的问题(为什么你认为你需要重载返回类型),所以我们可以帮助你解决真正的问题。是的,因为这个例子接近我真正的问题。我有两个继承类,每个类有一个成员,它们的类型不同于另一个。这个例子只是我真实代码的简化版本,可以这么说。嗯,我需要坚持使用最基本的库。。。所以不能使用它:/I我尝试了模板解决方案,但没有成功。我想我将使用最简单但有点丑陋的解决方案,即每个数据类型声明一个单独的函数。
#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()