我有一個基類命名的變量基類功能:重寫與不同的返回類型
class Variable
{
protected:
std::string name;
public:
Variable(std::string name="");
Variable (const Variable& other);
virtual ~Variable(){};
};
我有幾個派生類,如int,布爾,字符串等。例如:
class Bool: public Variable{
private:
bool value;
public:
Bool(std::string name, bool num);
~Bool();
Bool (const Bool& other);
bool getVal();
每個派生類都有一個名爲getVal()的方法,它返回一個不同的類型(bool,int等)。我想允許變量類的多態行爲。
我試過:void getVal();
這似乎是錯誤的,編譯器顯示錯誤:shadows Variable::getVal()
這聽起來不好。 我想到使用template <typename T> T getVal();
但它沒有幫助。
有什麼建議嗎?我必須使用鑄造嗎?
非常感謝......
顯示您在基座嘗試什麼和派生類 –
'可變條件= condition_statement.evaluate(類型);' //其中'condition_statement.evaluate(類型)'返回一個布爾對象 'COUT << condition.getval ();' 編譯器說:「'類變量'沒有名爲'getVal'的成員」 – Shakedk
請注意,您只能擁有**協變返回類型**,否則您會隱藏基類函數,這不是你想要的行爲。 –