我试图找到问题的解决方案,但我没有任何进展,所以我需要你帮助解决这个问题。
我的抽象类是:
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;
}
如果我要发布更多信息,我很乐意编辑文本。提前谢谢
答案 0 :(得分:2)
Const::evaluate()
的签名与Expression::evaluate() const
不同。将您的第二个表达式更改为const,然后它可以工作。
对于C ++ 11,有一个新的override
关键字,如果父类中没有匹配的签名,编译器会为您提供更好的错误消息。
http://en.cppreference.com/w/cpp/language/override