Я пытался найти решение своей проблемы, но я не прогрессирую, поэтому мне нужно, чтобы вы помогли с этим.
мой абстрактный класс:
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;
}
Если мне нужно будет опубликовать дополнительную информацию, я с удовольствием отредактирую текст. заранее спасибо
Const::evaluate()
имеет другую подпись, чем Expression::evaluate() const
, Измените ваше второе выражение на const, тогда оно работает.
С C ++ 11 появился новый override
ключевое слово, где компилятор дает вам лучшее сообщение об ошибке, если у вас нет соответствующей подписи в родительском классе.
http://en.cppreference.com/w/cpp/language/override
Других решений пока нет …