Я хочу написать небольшую программу с несколькими классами.абстрактный тип класса ... не разрешен, чистая виртуальная функция не переопределяется
Первый номер класса:
class Number
{
public:
virtual int compare(Number& a) = 0;
virtual string toString() = 0;
virtual void fillRandom() = 0;
};
Второй класс Rational, который наследует от числа
class Rational:Number
{
public:
int l;
int m;
Rational(int a, int b)
{
this->l = a;
this->m = b;
}
int compare(Rational a){} // here is the problem
string toString(){}
void fillRandom(){}
};
Я понимаю, почему у меня есть эта ошибка, у меня есть чисто виртуальный метод int compare(Number& a)
, таким образом, во всех подклассов I должен иметь тот же метод.
Но, если я изменяю compare
аргумент Number
, он не будет работать без литья номера в Rational где-то в compare
.
Есть ли способ сделать это без литья? Или что это лучший способ сделать это?
Вам нужен полиморфизм? – NathanOliver
Да, это то, что мне нужно –
Вы не можете сделать это с актом, так как параметр 'Number' не должен быть' Rational'. –