错误 - 变量类型“X”是一个抽象类--c ++

时间:2017-07-09 18:34:39

标签: c++ polymorphism abstract

我试图找到问题的解决方案,但我没有任何进展,所以我需要你帮助解决这个问题。

我的抽象类是:

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

如果我要发布更多信息,我很乐意编辑文本。提前谢谢

1 个答案:

答案 0 :(得分:2)

Const::evaluate()的签名与Expression::evaluate() const不同。将您的第二个表达式更改为const,然后它可以工作。

对于C ++ 11,有一个新的override关键字,如果父类中没有匹配的签名,编译器会为您提供更好的错误消息。 http://en.cppreference.com/w/cpp/language/override