假设我有以下实现:
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()。这是可能的,如果是这样,我将如何设置类定义?