2017-07-09 26 views
-1

私の問題の解決方法を見つけようとしていましたが、何らかの進歩はありませんでした。エラー - 変数型 "X"は抽象クラスです - C++

私の抽象クラスがある:

class Expression 
{ 
public: 
    Expression(); 
    virtual ~Expression(); 
    virtual double evaluate() const = 0; // calculates and returns the value of expression 
    virtual void print() const = 0; // prints the mathematical expression as string 
}; 

私のサブクラス:

class Const : public Expression 
{ 
public: 
    Const(double valIn); 

    double evaluate(); 

    void print() const; 

private: 
    double val; 
}; 

と私は問題を抱えています行がある:関数から

Const c(4); 

void testConst() 
{ 
    Const c(4); 
    c.print(); 
    std::cout << " = " << c.evaluate() << std::endl; 
} 

さらに詳しい情報を掲載する必要がある場合は、喜んでテキストを編集します。事前にありがとう

+2

'Const :: evaluate'はconstではないため、シグネチャが一致しません。 最新のC++で 'override'を使用する – EGOrecords

答えて

2

Const::evaluate()Expression::evaluate() constとは異なる署名を持っています。 2番目の式をconstに変更してください。

C++ 11の場合、新しいoverrideキーワードがあります。親クラスに一致する署名がない場合、コンパイラはより良いエラーメッセージを表示します。 http://en.cppreference.com/w/cpp/language/override

関連する問題