覆盖具有不同返回类型的子类函数

时间:2016-10-18 19:37:33

标签: c++ override virtual-functions

假设我有以下实现:

class Number
{
public:
  virtual ??? getValue()
  {
     return 0;
  }
};

class Float: public Number
{
public:
  float getValue()
  {
     return 12.34;
  }
};

class Int: public Number
{
public:
  int getValue()
  {
    return 123;
  }
};

其他地方:

std::map<std::string,Number*> numberMap; // Assume initialized with some list

float f = numberMap["someFloat"]->getValue();
int i = numberMap["someInt"]->getValue();

正如底部代码部分所示,我想在没有向下转换的情况下调用getValue()。这是可能的,如果是这样,我将如何设置类定义?

0 个答案:

没有答案