полиморфизм — ошибка — тип переменной & quot; X & quot; абстрактный класс

Я пытался найти решение своей проблемы, но я не прогрессирую, поэтому мне нужно, чтобы вы помогли с этим.

мой абстрактный класс:

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

Решение

Const::evaluate() имеет другую подпись, чем Expression::evaluate() const, Измените ваше второе выражение на const, тогда оно работает.

С C ++ 11 появился новый override ключевое слово, где компилятор дает вам лучшее сообщение об ошибке, если у вас нет соответствующей подписи в родительском классе.
http://en.cppreference.com/w/cpp/language/override

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]